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