jQuery移动ajax请求

jQuery移动ajax请求,ajax,jquery-mobile,Ajax,Jquery Mobile,我试图从jQuery移动网站的javascript文件中检索信息。默认情况下启用了Ajax,但是当我尝试xmlHttpRequest.send()时,responseText是页面的源代码,而不是json结构。initialize()函数是在pageinit上运行的,因此我的想法是,调用时它正在检索的json应该存在。此外,initialize()在站点的非移动变体上也可以正常工作,因此我认为它与JQM如何处理ajax请求有关。提前感谢您的帮助 <!DOCTYPE html> <

我试图从jQuery移动网站的javascript文件中检索信息。默认情况下启用了Ajax,但是当我尝试xmlHttpRequest.send()时,responseText是页面的源代码,而不是json结构。initialize()函数是在pageinit上运行的,因此我的想法是,调用时它正在检索的json应该存在。此外,initialize()在站点的非移动变体上也可以正常工作,因此我认为它与JQM如何处理ajax请求有关。提前感谢您的帮助

<!DOCTYPE html>
<html>
    <head>
        var xmlHttpRequest;
        var json;

        <script type="text/javascript">
            function initialize()
            {
                xmlHttpRequest = (window.XMLHttpRequest) ? new XMLHttpRequest() :
                                 new ActiveXObject("Msxml2.XMLHTTP");

                if (xmlHttpRequest == null)
                return;

                xmlHttpRequest.open("GET", "pick.js", false);
                xmlHttpRequest.send();
                json = eval('('+ xmlHttpRequest.responseText +')');
            }
        </script>
        ......
    </head>

    <body>
        <div data-role="page" id="map-page"> 
            <script type="text/javascript">
                $('#map-page').live('pageinit',function(){
                    initialize();
                });
            </script>
            .....
        </div>
    </body>
</html>

var-xmlHttpRequest;
var-json;
函数初始化()
{
xmlHttpRequest=(window.xmlHttpRequest)?新建xmlHttpRequest():
新的ActiveXObject(“Msxml2.XMLHTTP”);
if(xmlHttpRequest==null)
返回;
open(“GET”,“pick.js”,false);
xmlHttpRequest.send();
json=eval('('+xmlHttpRequest.responseText+'));
}
......
$('#映射页').live('pageinit',function(){
初始化();
});
.....

因为使用jQuery Mobile(和THuSLY,jQuery),你应该考虑使用它处理所有的“硬东西”,比如为你创建XHR对象。< /P> 对于您的情况,您的代码如下所示:

function initialize() {

   $.get("pick.js", function(data, status, jqXHR) { 
       //when the call succeeds, do something with the 'data' param
       console.log(data);
   }, "script");
}

您可以尝试使用Fiddler来查看通信量是什么样子的。只是要弄清楚——您正在尝试动态获取脚本,然后在页面上执行它,对吗?这是正确的。javascript是在服务器上生成的,包含json。我想在浏览器中检索以进行处理。这将导致与以前相同的响应。回调函数从不执行,所以我想这意味着请求仍然失败。@petfreshman当请求“失败”时,这意味着实际请求得到的不是200。你有萤火虫还是小提琴手?你能告诉我当请求触发时服务器会告诉你什么吗(如果你使用firebug,打开控制台或网络面板并查看请求/响应)有趣的是,当我直接转到url时,它工作正常,但从应用程序内的另一个页面链接到它失败。我正在使用Firebug,状态为“200 OK”。我在不同的论坛上看到过这种效果,但每个帖子似乎都有不同的解决方案。最好是将“pick.js”中的任何代码移到你的页面上。或者您可以使用require.js或其他动态脚本加载实用程序来加载所述脚本。很难给你一个好的答案,因为我不太确定你想要实现什么。在查看了我的服务器端代码后,我认为ajax不是完全必要的。但如果我继续沿着这条路走下去,这个解决方案是有用的。谢谢你的B计划!