2011-04-12 96 views
1

我开发我的web应用程序和本地主机上运行:8080,在我的js文件,我有一个AJAX调用从服务器获取XML数据:为什么我的jQuery的AJAX调用不成功

$.ajax({ 
     url: 'http://COMPANY_DOMAIN.com/company-interface/the-id', 
     type: 'GET', 
     async: false, 
     dataType: 'application/xml', 
     data: {id: 43}, 
     success: function(data) { 

      alert(data); 

     }, 
     error: function(xhr, status, error){ 
      alert('error happens'); 
     } 
    }) 

我可以访问网址http://COMPANY_DOMAIN.com/company-interface/the-id/?id=43它将在browswer上显示xml结果,但我上面的ajax调用总是进入错误函数。

我的萤火选中, 'XML' 选项卡显示 “XML解析错误:没有的元素中找到位置:MOZ-nullprincipal:{9fd0dca8-cf07-4401-b1de-ab04e8aa00bc} 1号线,第1栏:”并且萤火虫显示URL GET是http://COMPANY_DOMAIN.com/company-interface/the-id/?id=43 & = 1302610001570

为什么firebug GET显示“... & = 1302610001570”?这是什么意思?为什么我的ajax调用失败,但我可以访问该URL?

----------------编辑---------------

您好,我更改为使用本地主机要求如:

$.ajax({ 
      url: 'http://localhost:8080/company-interface/the-id', 
      type: 'GET', 
      async: false, 
      dataType: 'xml', 
      data: {id: 43}, 
      success: function(data) { 

       alert(data); 

      }, 
      error: function(xhr, status, error){ 
       alert('error happens'); 
      } 
     }) 

但我得到了同样的错误...更多建议请...谢谢。

+0

额外的参数可防止查询页面的缓存。如果这不起作用,这可能是由于跨域安全问题 – Alex 2011-04-12 12:29:18

回答

0

你的数据类型更改为application/xmltext/xml

至于其他的意见建议,为您的网址上的另一个域?如果不是,则尝试使用相对URL。

+0

我改变了,但它并没有改变任何东西...... :( – Mellon 2011-04-12 12:29:26

3

这可能是由于跨域访问控制。您正在访问试图连接到另一个网站的计算机上的网站。除非您定义Access-Control-Allow-Origin标题,否则不允许这样做。

另外@Craig说,内容类型为xml需要更改。

+0

如何定义Access-Control-Allow-Origin头文件??我正在开发一个纯粹的JavaScript项目,以一个index.html文件为起点在哪个文件以及如何定义Access-Control-Allow-Origin头文件? – Mellon 2011-04-12 12:36:27

+0

这需要由您的服务器来设置,参见http://en.wikipedia。org/wiki/Same_origin_policy – Aliostad 2011-04-12 12:37:40

+0

还搜索SO for Access-Control-Allow-Origin – Aliostad 2011-04-12 12:38:15

0

1302610001570是测量响应,

如果没有响应创建有效的XML你检查?

+0

不,如我所述,有一个XML分析错误消息 – Mellon 2011-04-12 12:35:38

+0

测量响应? – redsquare 2011-04-12 12:58:56

+0

你对测量反应有什么意义?我在哪里可以得到它? – Mellon 2011-04-12 13:37:56

1

Javascript受制于same origin policy。您在本地主机上运行的脚本无法访问COMPANY_DOMAIN.com。

1

试试下面的代码:

$.ajax({ 
      url: 'http://localhost:8080/company-interface/the-id', 
      type: 'GET', 
      async: false, 
      dataType: 'text', 
      data: {id: 43}, 
      success: function(data) { 

      // Assume response like.. 
      // <note> 
      // <from>Jani</from> 
      // <to>Tove</to> 
      // <message>Remember me this weekend</message> 
      // </note> 

      xmlDoc = $.parseXML(data), 
      $xml = $(xmlDoc), 
      $message = $xml.find("message") 
      alert($message.text()); 
      $("#xmlResonse").html($message.text()); 

     }, 
     error: function(xhr, status, error){ 
      alert('error happens'); 
     } 
    }) 
相关问题