2013-01-31 229 views
0

我想从我的jQuery手机网站的JavaScript文件中检索信息。 Ajax默认启用,但当我尝试xmlHttpRequest.send()时,responseText是页面的源代码而不是json结构。 initialize()函数在pageinit上运行,所以我的想法是它被调用的json应该存在。另外,initialize()可以在网站的非移动版本上正常工作,所以我认为它与JQM处理Ajax请求的方式有关。预先感谢您的帮助。jQuery Mobile 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> 
+0

您可以尝试使用招看交通是什么样子。 – Pete

+0

只是要清楚 - 你试图动态获取脚本,然后在页面上执行它,对吧? –

+0

这是正确的。 javascript在服务器上生成并包含json。我想要检索在浏览器中进行处理。 – petfreshman

回答

0

由于您使用jQuery Mobile的(正是如此,jQuery的),你应该考虑使用jQuery.ajax - 它处理所有喜欢你创建XHR对象的“硬东西”。

对于您的情况您的代码应该是这样的:

function initialize() { 

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

这导致与以前相同的响应。回调函数从不执行,所以我猜这意味着请求仍然失败。 – petfreshman

+0

@petfreshman当请求'失败',这意味着实际的请求获得除了200以外的东西。你有萤火虫或小提琴手吗?你能告诉我什么时候服务器告诉你什么时候请求触发(如果你使用萤火虫,打开控制台或网络面板,并看看请求/响应) –

+0

有趣的是,当我直接去url时,它工作正常,但是从应用中的另一个页面链接到它失败。我正在使用Firebug,状态显示'200 OK'。我在不同的论坛上看到过这种效果,但每篇文章似乎都有不同的解决方案。 – petfreshman