2011-04-12 49 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'); 
     } 
    }) 
相關問題