2013-07-28 89 views
0

我,讓AJAX調用follwoing URLjQuery的AJAX無效標籤

http://dailymed.nlm.nih.gov/dailymed/services/v1/drugname/sanctura%20xr/spls.json

我一直在螢火控制檯收到無效標籤錯誤。這是我的ajax代碼。請讓我知道我哪裏錯了。

//Make an ajax call 
      $.ajax({ 
       type:'GET', 
       dataType:'jsonp', 
       url: 'http://dailymed.nlm.nih.gov/dailymed/services/v1/drugname/sanctura/spls.json', 
       //crossDomain: true, 

       beforeSend: function(xhr) { 
         xhr.setRequestHeader('Access-Control-Allow-Origin: *'); 
        }, 


       error: function (xhr, ajaxOptions, thrownError) { 
        console.log('status '+xhr.status); 
        console.log(''+xhr.responseText); 
        console.log(''+ajaxOptions); 
        console.log(''+thrownError); 

       }, 
       success: function(){  
        alert('success'); 
       } 
      }); 
+0

要使用jsonp,需要將服務器設置爲將回調添加爲響應數據的包裝。許多啓用jsonp的服務器期望一個參數「回調」(默認情況下由jquery設置)作爲數據響應時將調用的頁面上的JavaScript函數的名稱。例如,'http://foo.com/data/data.json?callbcack = bar'會發送像'bar(/ * data goes here/*)這樣的數據' - 無論如何,它看起來不像服務器正在響應包裝數據的回調。如果你的頁面有安全的訪問權限,那麼一個常規的Ajax調用就可以完成。否則,你需要一個代理。 – lemieuxster

+0

或者用更簡單的術語:你的URL返回JSON,但你的代碼試圖把它當作JSONP(這不起作用)。 – nnnnnn

+0

什麼時候定期json我得到follwoing錯誤。 XMLHttpRequest無法加載http://dailymed.nlm.nih.gov/dailymed/services/v1/drugname/sanctura/spls.json。 Access-Control-Allow-Origin不允許原始http:// localhost:9011。 – KCP

回答

0

nnnnnn建議您爲API構建自己的代理是解決這些問題的好建議。

我只是想爲今後在這裏結束的人添加一個,那就是DailyMed Web Service現在有適當的CORS頭。 Access-Control-Allow-Origin被設置爲「*」,這意味着任何人都可以通過AJAX訪問API。

您現在可以使用DailyMed Web Services使用常規AJAX。