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

AJAX doesn't work in browser when wanting to retrieve data from URL

本文关键字:AJAX 浏览器 不起作用 数据 URL 检索      更新时间:2023-09-26

当我想从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不能在浏览器的跨域上工作。这是真的吗?也读到,我可以改变数据类型为"jsonp"-但这甚至不能在dreamweaver工作。

你知道有什么问题吗?还是应该使用AJAX之外的其他东西来解决这个问题?

这是一个手机应用程序在PhoneGap,所以我也使用jquery。

您的阅读正确,这是交叉脚本漏洞预防工作。您可以使用JSONP来绕过它,但JSONP不是JSON——语法略有不同,因此您所联系的服务器必须以JSONP格式向您发送数据。如果您期待JSONP并接收JSON,那么难怪它在任何地方都无法工作。如果您期望JSONP和接收XML,那就像苹果和丰田。

当你使用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....然后继续你的工作