1

当我想从 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。

4

2 回答 2

3

您没看错,这是工作中的跨脚本漏洞预防。您可以使用 JSONP 绕过它,但 JSONP 不是 JSON - 语法略有不同,因此您联系的服务器必须以 JSONP 格式向您发送数据。如果您期待 JSONP 并接收 JSON,难怪它在任何地方都不起作用。如果您期待 JSONP 并接收 XML,那就像苹果和丰田一样。

于 2013-04-23T08:04:39.653 回答
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.... 并按照您的意图继续您的工作。

于 2013-04-24T07:03:23.760 回答