簡體   English   中英

Ajax POST錯誤(400錯誤請求)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM