5
我建立一個小的Chrome擴展程序,必須通過POST HTTP請求在我公司的網絡將消息發送到服務器的GET,和我使用jQuery 1.4。 1加快javascript部分的開發。jQuery.ajax()發送POST請求作爲一個Chrome擴展
我有這樣的代碼來發送請求:
function send() {
$.ajax({
url: "http://mycompany.com/update",
method: "POST",
data: {status: "sometest", in_reply_to_status_id: "anId"},
success: function(data, textStatus) {
console.log("success");
console.log(data);
console.log(textStatus);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log("error");
console.log(XMLHttpRequest);
console.log(textStatus);
console.log(errorThrown);
},
complete: function(XMLHttpRequest, textStatus) {
console.log("complete");
}
});
}
做這樣的請求失敗,在Chrome登錄我看到了從服務器返回HTTP狀態400並用文字回答「這個方法需要POST」。
如果我改變代碼上面這樣的:
function send() {
$.post("http://sunshine.emerasoft.com/statusnet/api/statuses/update.xml", {status: "sometext", in_reply_to_status_id: "anId"}, function(data) {
console.log(data)
});
}
一切工作正常,HTTP狀態爲200和服務器端,我可以看到我發送的數據被正確保存。
我需要使用完整的$ .ajax()方法,因爲我需要在成功或失敗時做一些工作,而在請求完成時需要做一些其他工作,所以$ .post()是不夠的。
我做錯了什麼調用$ .ajax(),或者有某種問題,也許是因爲我在Chrome擴展的xontext?
感謝
你是絕對正確:)我經歷了jQuery文檔一百萬次,我從未注意到我使用了錯誤的選項。感謝您指出這個給我! – 2010-02-02 23:06:13
令人驚訝的是,這花了我很長時間來解決......當從同一個域進行POST時,實際上使用POST時,我有'方法'在那裏。但只要我嘗試從不同的域跨域進行POST,它最終會變成GET。這解決了它。不知道爲什麼'方法'在同一個域上工作。 – Futile32 2016-03-07 23:57:44