PhoneGap在iOS设备上使用Ajax获取XML解析器时出错

3

在包含jquery-1.8.3.min.js的情况下,ajax xml解析正常工作。如果我包含jquery.mobile-1.3.2.min.js就会出现错误:"XMLHttpRequest无法加载http://myurl.com。所请求的资源中没有'Access-Control-Allow-Origin'头部。因此,来源为'null'的访问被禁止。"

我已经尝试过:

<script type="text/javascript" src="js/jquery.mobile-1.3.2.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
      $.support.cors = true;
      $.mobile.allowCrossDomainPages = true;
        $.ajax({
            type: "GET",
            url: "http://myurl.com",
            dataType: "xml",
            success: function(xml) {
                $(xml).find('ad').each(function(){
                   var url = $(this).find('url').text();
                   alert(url);
                   var title = $(this).find('title').text();
                   var details = $(this).find('content').text();
                   $("#BlogList").append("<div class='blog_listing'>                                                                     <div class='blog_list_title'><a href='"+$.trim(url)+"' title='"+$.trim(title)+"'>"+$.trim(title)+"</a></div><div class='blog_list_detials'><p>"+$.trim(details)+"</p></div></div>");

                });
            }
        });
    });
</script>

它不能工作


你是否同时使用了jquery 1.8.3和jquery mobile 1.3.2?尝试一下使用jquery 1.9.1。 - jcesarmobile
@jcesar现在我尝试使用jQuery 1.9.1,它也显示相同的错误。 - Balachandiran
你是否从远程服务器加载index.html?错误:index.html的域名与您发送请求的URL不同。在服务器上,将Access-Control-Allow-Origin ='*'放置以允许所有域名访问。 - Hanh Le
@Hanh Le,我已经在.htaccess中尝试了Header set Access-Control-Allow-Origin "*",但仍然显示相同的错误。我需要解析来自WordPress的XML源。 - Balachandiran
我不确定,问题可能来自JQM。您应该检查allowCrossDomainPages - Hanh Le
1个回答

3

我发现在你提供的快照中找不到添加的jquery文件,如果你已经添加了它但仍然遇到问题,那么我建议你尝试以下方法并让我知道。

Access-Control-Allow-Origin错误通常是由于浏览器Web安全权限引起的。如果您在Chrome中运行ajax请求,则建议您在Chrome中禁用Web安全性并尝试。

如果您正在使用MAC,则在终端中键入下面的代码并按Enter:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security --allow-file-access-from-files --allow-file-access --user-data-dir=~/chrome-test/ spec/runner.html 

如果您正在使用 Windows 操作系统,请进入命令提示符,并转到 Chrome.exe 所在的文件夹,然后输入:

chrome.exe --disable-web-security

尝试运行下面的代码,然后在打开的浏览器中运行你的项目,如果运行成功,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接