[英]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: { ... }
問題確實是我將數據發送到控制器操作的方式。 我通過執行以下操作修復了它:
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.