2013-10-13 47 views
3

我試圖通過JQuery獲取外部REST API數據,但它會拖延未定義。但是,當我使用我的本地REST API網址時,它可以正常工作。任何人都可以解釋什麼是問題。任何代碼示例將不勝感激。無法通過JQuery獲取外部API數據

這是我如何通過JQuery訪問外部Rest API。

function GetCompanyName(id) { 
     jQuery.support.cors = true; 
     $.ajax({ 
      url: 'http://novacompanysvc.azurewebsites.net/api/companies' + '/' + id, 
      type: 'GET', 
      dataType: 'jsonp', 
      success: function (data) { 
       WriteResponse(data); 
      }, 
      error: function (x, y, z) { 
       alert("company" + x + '\n' + y + '\n' + z); 
      } 
     }); 
    } 
+1

我看到一個JSON結果不是JSONP – Musa

+1

能否請您粘貼示例代碼? – SPBeginer

+1

結果是一個XML,但你必須得到json與回調才能得到它的工作... – reyaner

回答

0
  1. 結果是XML,所以你需要設置dataType: "text/xml",然後分析它:

      success: function (data) { 
          if (window.DOMParser) 
            { 
            parser=new DOMParser(); 
            xmlDoc=parser.parseFromString(data,"text/xml"); 
            } 
           else // Internet Explorer 
            { 
            xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
            xmlDoc.async=false; 
            xmlDoc.loadXML(data); 
            } 
    
  2. 我試圖測試這一點,但我得到:is not allowed by Access-Control-Allow-Origin是相同來源的限制,從而使確定你有權訪問這個API,或者你將不得不在服務器上使用PHP中的CURL來完成它。

  3. 你越來越在,你在你的問題顯示功能ID變量,但使用的是它沒有, 如果你想送它補充:

    ,數據爲:{ID:ID}

請求應該是這個樣子:

 function GetCompanyName(id) { 
     jQuery.support.cors = true; 
     $.ajax({ 
      url: 'http://novacompanysvc.azurewebsites.net/api/companies', 
      type: 'GET', 
      data:{ id:id }, 
      dataType: "text/xml", 
     success: function (data) { 
      if (window.DOMParser) 
       { 
       parser=new DOMParser(); 
       xmlDoc=parser.parseFromString(data,"text/xml"); 
       } 
      else // Internet Explorer 
       { 
       xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
       xmlDoc.async=false; 
       xmlDoc.loadXML(data); 
       } 
      WriteResponse(data); 
     }, 
     error: function (x, y, z) { 
       alert('error'); 
     } 
     }); 
    } 
+0

我也加了id在url結尾處,但仍然是相同的錯誤。現在看到我編輯的問題。 – SPBeginer

+0

也試過你的代碼,但仍然是相同的錯誤! – SPBeginer

+0

你的修改是錯誤的,'+ id'會創建一個無效的URL,你應該像我指示的那樣傳遞變量。另外,正如我在2號所說的那樣,我並不打算讓它工作,因爲api頁面有一個原點限制,所以如果你不在它的範圍內或在同一個域中,你將無法使用jquery加載數據。 –