想要从URL检索数据时,AJAX在浏览器中不起作用

时间:2013-04-23 08:02:12

标签: javascript jquery ajax browser

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

2 个答案:

答案 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 ....并按照您的意图继续工作。