0
我想做一些跨域數據請求。首先,我嘗試在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容器中的結果。
然後我想我給它使用jQuery的JSONP一個嘗試,這裏是代碼:
<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支持跨域請求,因此您向雅虎做了跨域請求,並且他們向服務器端的第三方發送請求,其中對跨域請求沒有限制。所以YQL總是有效的,即使你使用的服務不支持JSONP和跨域請求,你甚至可以使用它來進行搜索等。 – adeneo
所以你說的遠程服務器可能不支持JSONP? – user1824996
@ user1824996這確實是一種可能性。 –