Я хочу сделать запрос на междоменные данные. Сначала я попытался в YQL, и он работал:Почему YQL работает, но не JSONP?
<script type="text/javascript">
$(document).ready(function(){
var myURL = 'http://example.com';
var xpathVariable = '...';
var yql = "http://query.yahooapis.com/v1/public/yql?q=" + encodeURIComponent("SELECT * FROM html WHERE url='" + myURL + "'") + "%20AND%20xpath%3D'%2F%2Fdiv%5B%40id%3D%22" + xpathVariable + "%22%5D" + "&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=?";
jQuery.getJSON(yql, function(data){
var divToUpdate = $('#container');
jQuery.each(data.query.results.span, function(i, spanItem){
$('<div>' + spanItem.content + '</div>').appendTo(divToUpdate);
if(i == 4) return false;
});
});
});
</script>
Результат, отображаемый в контейнере div, как ожидалось.
Тогда я думал, что я дам ему попробовать с JSONP JQuery, вот это код:
<script type="text/javascript">
$(document).ready(function(){
var myURL = 'http://example.com/search?type=2561&location=1562';
jQuery.ajax({
type: 'GET',
url: myURL,
dataType: 'jsonp',
jsonp: false,
jsonpCallback: 'requestCallback',
error: function(xhr, status, error){
alert('error');
}
});
function requestCallback(data){
console.log(data);
}
});
</script>
В этот момент, я просто хочу, чтобы отобразить данные обратного вызова JSon в журнале консоли, я не знаю, что я сделал не так, поскольку он выдает сообщение об ошибке. Поскольку JSONP терпит неудачу, я не мог понять, какая часть кода была неправильной. Может кто-нибудь помочь?
YQL поддерживает кросс-доменные запросы, поэтому вы отправляете запрос на перекрестный домен в Yahoo, и они делают запрос третьей стороне на сервере, где нет ограничений на запросы перекрестных доменов. Таким образом, YQL всегда работает, даже если служба, которую вы используете, не поддерживает JSONP и междоменные запросы, вы даже можете использовать ее для очистки и т. Д. – adeneo
Итак, вы говорите, что удаленный сервер может не поддерживать JSONP? – user1824996
@ user1824996 Это действительно возможность. –