簡體   English   中英

使用jQuery向Web API發布多個參數

[英]Posting multiple parameters to Web API using jQuery

像我之前的許多人一樣,我正在嘗試將多個參數傳遞給Web API項目。 我嘗試過在這個網站上提供的幾種解決方案,但沒有運氣。 我最近的失敗迭代看起來如下:

控制器

public class UserDTO
{
   public int userID;
   public string username;
}

[HttpPost]
public string Post([FromBody]UserDTO userDTO)
{
   return userDTO.userID.ToString() + " " + userDTO.username;
}

Web API路由配置

config.Routes.MapHttpRoute(
   name: "DefaultApi",
   routeTemplate: "api/{controller}/{id}",
   defaults: new { id = RouteParameter.Optional }
);

jQuery

var apiUrl = "http://localhost:55051/api/User/Post";
var userDTO = {
   userID: 5,
   username: "testuser"
};

$.ajax({
   type: "POST",
   url: apiUrl,
   data: JSON.stringify(userDTO),
   datatype: "json",
   contenttype: "application/json; charset=utf-8"
)};

小提琴輸出

Fiddler顯示正確傳遞的JSON變量,在Raw視圖中我可以看到:

{"userID":5,"username":"testuser"}

關於執行

userID = 0
username = null

救命!

我認為問題出在Web API上,並且由於我的POST似乎在Fiddler中正確格式化,因此使用JSON參數很困難。 有任何想法嗎?

你的jQuery ajax調用失敗了嗎? 檢查一下?

var apiUrl = "http://localhost:55051/api/UserController/Post";

看到你的代碼應該是:

var apiUrl = "http://localhost:55051/api/User";

單詞控制器通常不是您的URL的一部分。 您不必顯式調用POST,它應該按照慣例選擇它,因為您的ajax調用是POST。

編輯:

上面和你的ajax調用中的套管作為評論。

我個人使用Firebug(Firefox擴展)來調試這些案例。 如果在這種情況下發現它比提琴手更方便。

我的猜測是你必須傳遞:{userDTO:{userID ...}}作為jquery中的數據。 請求被包裝。 當然,你必須對此進行字符串化。

現在您傳遞參數但它們都不匹配userDTO,因此它獲取默認值。

在這里看到我以前的答案: Jquery帖子

暫無
暫無

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

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