簡體   English   中英

如何將四個參數從Ajax發布到MVC API控制器

[英]How to post four parameters from ajax to MVC API controller

我需要將4個參數從AJAX發布到MVC api方法。 調用了Api方法,但是所有變量都有默認值。 為零, 應用級別的值為空。

知道我的代碼中有什么問題嗎?

$.ajax({
    url: "/api/home/GetLogList",
    method: 'POST',
    dataType: 'json',
    data: { year: 2017, month: 5, app: "hello", levels: ["aa", "bb"] },
    contentType: 'application/json; charset=utf-8',
    success: function (logs) {
        alert("successs");
    },
    error: function (jqXHR, textStatus) {
        alert("fail");
    }
})

API

[HttpPost]
[Route("api/home/GetLogList")]
public async Task<IEnumerable<Log>> GetLogList(int year, int month, string app, IEnumerable<string> levels)
{
    using (var client = new HttpClient())
    {
        var refreshedLogs = await GetLogList(client, year, month, app, null);
        return refreshedLogs;
    }
}

我認為您唯一的解決方案是為方法參數創建viewModel?

public class LogListVM {
  public int year { get; set; } 
  public int month { get; set; } 
  public string app { get; set; } 
  public IEnumerable<string> levels { get; set; } 
}

[HttpPost]
[Route("api/home/GetLogList")]
public async Task<IEnumerable<Log>> GetLogList(LogListVM params)
{
  using (var client = new HttpClient())
  {
    var refreshedLogs = await GetLogList(client, params.year, params.month, params.app, null);
    return refreshedLogs;
  }
}

JS不變。

contentType:'application / json; charset = utf-8'

數據類型以json格式發送-在您的情況下,您需要轉換為json

dataType:'json'

將數據類型從服務器返回到json

$.ajax({
url: "/api/home/GetLogList",
contentType: 'application/json; charset=utf-8', // data type to be send to server in json format
method: 'POST',
dataType: 'json', // return type of data from server - should be json
data:JSON.stringify( { year: 2017, month: 5, app: "hello", levels: ["aa", "bb"] }),

success: function (logs) {
    alert("successs");
},
error: function (jqXHR, textStatus) {
    alert("fail");
}
});

暫無
暫無

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

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