[英]Ajax POST error (400 BAD REQUEST)
並先感謝您對我的幫助。
我正在嘗試發布一個在URL中傳遞令牌的帖子,我也想傳遞另一個參數,以便將信息保存在數據庫中。 我有這個:
$("#btnAddCompany").click(function(e) {
var token = "123";
var companyValue = document.getElementById("companyValue").value;
var obj ={CompanyId: 4 ,Name: companyValue }
var postData = JSON.stringify(obj);
console.log(postData);
$.ajax({
type: "POST", //REQUEST TYPE
dataType: "json", //RESPONSE TYPE
contentType: "application/json",
data: postData,
url: "http://banametric.ddns.net/BanaMetricWebServices/BanaSov_WS.svc/CompanySave/"+token,
success: function(data) {
toastr.success("Lidl Adicionado!");
},
error: function(err) {
console.log("AJAX error in request: " + JSON.stringify(err, null, 2));
}
}).always(function(jqXHR, textStatus) {
if (textStatus != "success") {
alert("Error: " + jqXHR.statusText);
}
})
});
但是我遇到了400錯誤(錯誤請求),因此我認為自己做錯了什么,但是我不知道是什么。 錯誤跟蹤是這樣的:
請求中的AJAX錯誤:{“ readyState”:4,“ responseText”:“ \\ r \\ n
服務器在處理請求時遇到錯誤。 異常消息為“傳入消息的消息格式為意外的原始”。 該操作的預期消息格式為“ Xml”,“ Json”。 這可能是因為尚未在綁定上配置WebContentTypeMapper。 有關更多詳細信息,請參見服務器日志。 異常堆棧跟蹤為:
\\ r \\ n位於System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest(消息,Object []參數)\\ r \\ n
由於是錯誤
該操作的預期消息格式為“ Xml”,“ Json”。 因此,您可以在ajax調用中傳遞contentType
$.ajax({
....,
contentType: "application/json"
})
我不確定,但這取決於要從您的服務器讀取什么。
服務器不想讀取原始字節,它想要xml或json
嘗試添加標題
beforeSend: function(xhrObj){
xhrObj.setRequestHeader("Content-Type","application/json");
xhrObj.setRequestHeader("Accept","application/json");
},
在$ .ajax()函數中
您需要在請求中設置內容類型標頭,以通知服務器您將數據作為JSON發送。
錯誤消息告訴您服務器不理解您要發送的內容-您必須提示它數據是特定格式的,尤其是因為再次出現錯誤消息中所述,它使您可以以一種以上不同的格式提交(在這種情況下為JSON或XML)。
新增中
contentType: "application/json"
$ .ajax調用中的選項應該可以解決問題。
PS:我們看不到控制器方法的簽名,但有可能您可能還需要在JSON中為參數指定名稱,例如data: JSON.stringify({ "companyValue": postData });
,但您的問題中沒有足夠的信息來確定正確的結構應該是什么。
$("body").on("submit", ".example_form", function() {
$.ajax({
url: 'http://example.com/{ROUTE_URL}',
data: new FormData(this),
processData: false,
contentType: false,
/* OR contentType: "application/json; charset=utf-8"*/
type: 'POST',
dataType: "json",
success: function(data) {
console.log(data);
}
});
});
代替這個
var postData = JSON.stringify(companyValue);
你為什么不試試這個:
var obj ={token :token ,companyValue:companyValue }
然后利用json stringify函數
var postData = JSON.stringify(obj);
之后,在ajax調用中僅更改URL:
url: "http://webservice/CompanySave/"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.