簡體   English   中英

ajax GET工作,POST給出400錯誤

[英]ajax GET works, POST gives 400 error

GetData(...)方法沒問題,但SetSimple(...)方法拋出錯誤400。

使用Javascript:

$.ajax(url,
        {
            type: action,
            timeout: 3000,
            data: { value: 123 },
            contentType: "application/json; charset=utf-8",
            //dataType: "json",
            success: function (data, textStatus, jqXHR) {
                displayInfo("success: "+data);
            },
            error: function(jqXHR, textStatus, errorThrown ) {
                displayInfo("error: "+errorThrown+" "+textStatus);
            }
        }
   );

C#:

[WebGet(RequestFormat = WebMessageFormat.Json)]
    string GetData(int value);

[WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, Method = "POST")]
    string SetSimple(int value);

要運行/測試它我在瀏覽器中打開了服務,然后在另一個瀏覽器中使用javascript我的測試頁面。 (而dataType:“json”似乎沒有幫助。)並且fiddler響應顯示“服務器遇到處理請求的錯誤。請參閱服務器日志以獲取更多詳細信息”,但我在事件日志中看不到任何內容。 有誰看到我做錯了什么?

您應該將JavaScript對象轉換為字符串。

JSON.stringify(data)

那你的例子

$.ajax (url,
    {
        type: action,
        timeout: 3000,
        data: JSON.stringify({ value: 123 }),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data, textStatus, jqXHR) {
            displayInfo("success: "+data);
        },
        error: function(jqXHR, textStatus, errorThrown ) {
            displayInfo("error: "+errorThrown+" "+textStatus);
        }
    }

);

您的ajax請求正在將“data”屬性設置為{value:123}。 您需要將適當的對象傳遞給CompositeObject的SetObject方法。 ajax請求看起來像是將它用作實用程序函數,因此只需將數據作為參數傳遞,因此ajax請求將是:

    var makeAjaxCall = function(url, action, data) {
        $.ajax(url,
            {
                type: action,
                timeout: 3000,
                data: data,
                contentType: "application/json; charset=utf-8",
                success: function (data, textStatus, jqXHR) {
                    displayInfo("success: "+data);
                },
                error: function(jqXHR, textStatus, errorThrown ) {
                    displayInfo("error: "+errorThrown+" "+textStatus);
                }
            }
       );
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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