我嘗試使用下面的代碼jQuery的:on Rails的跨域POST
$.ajax({
url: "http://domainName.com/api/v1/statistics/1",
crossDomain: true,
type: 'POST',
dataType: 'jsonp'
});
使POST請求到另一個域,但它給我的錯誤(404)和它似乎看到了請求作爲獲取請求不管是什麼
我嘗試使用下面的代碼jQuery的:on Rails的跨域POST
$.ajax({
url: "http://domainName.com/api/v1/statistics/1",
crossDomain: true,
type: 'POST',
dataType: 'jsonp'
});
使POST請求到另一個域,但它給我的錯誤(404)和它似乎看到了請求作爲獲取請求不管是什麼
您不能通過JSONP POST。你只能使用GET。
此外,域名應包含:http://
來訪問外部文檔。我希望你知道你必須創建一個使用JSONP的函數。默認調用回調函數callback
所以你的反應應該是這樣的:
callback({ "data" : "data"});
回調函數?callback=?
將autoomaticly被添加到URL。如果您重寫了,則必須使用$_GET['callback']
來獲取回調函數。
從jQuery docs:
「JSONP」:使用JSONP荷載在JSON塊。添加額外的 「?callback =?」到您的URL的末尾來指定回調。除非緩存選項設置爲true,否則通過向 URL附加查詢字符串參數「_ = [TIMESTAMP]」來禁用 緩存。
編輯
您的請求將看起來像:
$.ajax({
url: "http://domainName.com/api/v1/statistics/1",
crossDomain: true,
dataType: 'jsonp',
jsonp : "mycallback",
success : function(data){
console.log(data.thiskey); // Will log OK
}
});
現在請求URL到您的API看起來就像這樣(jQuery將追加?callback=mycallback
):
http://domainName.com/api/v1/statistics/1?callback=mycallback
在你的回覆中,你必須創建一個函數調用,以便它調用jQuery Ajax函數。這一結果必須是這個樣子:
mycallback({ thiskey : "OK" }); // The data in this call can be retreived at the success function
在成功的功能,您可以中檢索喜歡你的數據:
success : function(data){
console.log(data.thiskey); // Will log OK
}
你能解釋更多..我應該把這個回調放在哪裏..我使用http://當然,但我不知道如何應用你的答案:) –
增加了一個例子。這是僞代碼,並沒有測試這個。 – Niels
CORS
繼尼爾斯的答案,你必須意識到,跨域數據發送取決於「目標」域的CORS policy
基本上,除非您使用某種CORS中間件創建一些端點以訪問「外部」ajax請求,否則服務器的中間件會拒絕這些請求。
如果您錯誤地忽略了404
錯誤,應該查看使用如Rack-CORS爲您的應用提供跨域支持(允許跨域異步數據傳輸)
[404](http://en.wikipedia.org/wiki/HTTP_404)頁面未找到。我認爲URl是錯的 。 –
由於您告訴jquery您有興趣提出JSONP請求,因此請求是GET。這是你的dataType選項中的拼寫錯誤嗎? –