簡體   English   中英

jQuery Ajax不發布數據

[英]jquery ajax not posting data

我有一個似乎無法解決的問題。 我正在撥打以下ajax電話:

    var dataArray = { table: "Products" };

        $.ajax({
            url: uri,
            type: "POST",
            cache: false,
            datatype: "json",
            data: dataArray
        })
        .done(function( msg ) {
                 alert( "Data Saved");
             })
        .fail(function () {
            alert("error");
        });

我遇到的問題是,這似乎並沒有將dataArray中的內容發送到Web API控制器,並不斷返回以下響應:

{"Message":"No HTTP resource was found that matches the request URI 'http://myURI'.","MessageDetail":"No action was found on the controller 'MYController' that matches the request."}

讓我感到困惑的是,我可以做這樣的GET,它可以很好地返回數據。 另外,如果我只是扁平化,則將查詢字符串附加到uri

http://myURI?table=Products

然后POST可以正常工作。 我可以用這種方式來做,但是我對自己上面的方式做錯了很好奇。 謝謝!

這就是我的控制器中的內容。 我只是在嘗試驗證我現在是否可以解決這個問題。

    public void Post(string table)
    {
        string beingHit = "We did it!";
    }

問題不一定是您沒有將數據發送到Web API。 Web API無法識別它。

在確定匹配請求的操作以及如何綁定參數時,Web API默認會應用以下規則(來自asp.net上的文檔 ):

默認情況下,Web API使用以下規則來綁定參數:

  • 如果參數是“簡單”類型,則Web API會嘗試從URI中獲取值。 簡單類型包括.NET基本類型(int,bool,double等),以及TimeSpan,DateTime,Guid,十進制和字符串,以及帶有可從字符串轉換的類型轉換器的任何類型。 (稍后會更多有關類型轉換器的信息。)
  • 對於復雜類型,Web API嘗試使用媒體類型格式化程序從消息正文中讀取值。

在您的情況下,您嘗試綁定“簡單”類型參數( string )。 您已經看到它通過查詢字符串工作。 但是,如果您嘗試將其作為請求正文的一部分提交。 默認情況下,Web API不會識別它。

為了使Web API能夠識別請求主體中的參數,您將需要使用FromBody屬性在Action簽名中進行FromBody

public void Post([FromBody] string table)
{
    string beingHit = "We did it!";
}

這將告訴Web API查看請求正文中的param值(請注意,您只能在Action中將其用於一個param,因此對於像這樣的簡單類型,最好將它們包含在查詢字符串中,而[FromBody]是綁定請求主體中包含的復雜類型(如Json)的理想選擇。

暫無
暫無

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

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