当我想从URL检索数据时,我遇到了这个奇怪的问题。
$.ajax({
url: 'URLHERE',
dataType: 'html',
success: function(data) { //function 2
var xml = $.parseXML(data)
$(xml).find('StopLocation').each(function() //function 3
{
var name = $(this).attr('name');
var x = $(this).attr('x');
alert(name);
alert(x);
}); //function 3 end } //function 2 end }); //ajax end
这在Dreamweaver中有效,但在浏览器中无效。我一直在读它可能是因为AJAX不能在浏览器上跨域工作。这是真的?另请阅读我可以将dataType更改为'jsonp' - 但这在Dreamweaver中甚至不起作用。
任何想法都可能出错?或者我应该使用除AJAX之外的其他东西来解决这个问题吗?
这是PhoneGap中的移动应用,所以我也在使用jquery。
答案 0 :(得分:3)
您正确阅读,这是工作中的跨脚本漏洞预防。您可以使用JSONP绕过它,但JSONP不是JSON - 语法略有不同,因此您联系的服务器必须以JSONP格式向您发送数据。如果您期待JSONP并接收JSON,难怪它无法在任何地方工作。如果您期待JSONP并接收XML,那就像苹果和丰田。
答案 1 :(得分:1)
当您使用PhoneGap时,我认为这是可能的。您可以使用IE(而非其他浏览器)进行测试
var xhr = new XMLHttpRequest();
xhr.open("GET", "url", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var text = xhr.responseText;
alert(text);
}
}
xhr.send();
希望这有效,至少对我有用。 在此之后,您可以解析为xml ....并按照您的意图继续工作。