簡體   English   中英

將JQuery ajax GET轉換為POST

[英]Convert JQuery ajax GET to POST

我在我的應用程序中的索引剃刀上有這個jquery ajax get方法:

$.ajax({
    url: "@Url.Action("SubmitProjectForPreapproval", "api/Project")",
    type: "GET",
    cache: false,
    data: { projectId: "@ViewContext.RouteData.Values["ProjectId"]" }
}).done(function (data) {

    var count = 0;
    $.each(data, function (index, value) {
        $("#ulMessages").append("<li>" + value + "</li>");
        count++;
    });

    // Assume validation errors if more than 1 message
    if (count > 1) {
        $("#btnSubmit").removeAttr("disabled");
    }

}).fail(function () {

    $("#ulMessages").append("<li>An error occurred. Please try again later</li>");
    $("#btnSubmit").removeAttr("disabled");

}).always(function () {

    $("#imgAjaxLoader").hide();

});

這會在api / project控制器中調用一個返回字符串列表的方法:

[HttpGet]
public List<string> SubmitProjectForPreapproval(int projectId)
{ ... }

我想要做的是將其轉換為ajax post方法。 在一天中的大部分時間里,我一直在努力做到這一點。 我的問題是,為了實現這一目標,需要改變的是什么? 例如 - 將方法的屬性更改為[HttpPost] ,如何將路由值發送給它? (int pojectId)

編輯:如果我這樣做,它的工作原因是:

public List<string> SubmitProjectForPreapproval(/*int projectId*/)
{
    int projectId = 3308;
    ...
}

如果我在那里有參數,不知道為什么它找不到我的方法。

我不確定@Url的東西是如何格式化你的系統的 - 但只是將其更改為:

$.ajax({ url: "@Url.Action("SubmitProjectForPreapproval", "api/Project")", type: "POST", cache: false, data: { projectId: "@ViewContext.RouteData.Values["ProjectId"]" } }).done(function (data) {

如果你有點:

@Url.Action("SubmitProjectForPreapproval

..實際上有任何?xxx值,你還需要將它們添加到data: { ... }

問題確實是我將數據發送到控制器操作的方式。 我通過執行以下操作修復了它:

  • 更改ajax方法(使用JSON.stringify):

var projectIdObject = {
    ProjectId: "@ViewContext.RouteData.Values["ProjectId"]",
}

$.ajax({
    url: "@Url.Action("SubmitProjectForPreapproval", "api/Project")",
        type: "POST",
        cache: false,
        data: JSON.stringify(projectIdObject),
        contentType: 'application/json',
    }).done(function (data) { ... }
  • 添加一個類以獲取此字符串化值:

public class ProjectIdObject
{
    public string ProjectId { get; set; }
}
  • 更改控制器操作方法以接收此新對象並提取我想要的值:

[HttpPost]
public List<string> SubmitProjectForPreapproval(ProjectIdObject projectIdObject)
{
    int projectId = int.Parse(projectIdObject.ProjectId);
    ...
}

暫無
暫無

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

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