如何使用 Ajax 调用 MVC4 传递两个字符串数组
How to pass two String arrays using Ajax call MVC4
我想使用 Ajax.But 将两个字符串数组从视图传递到控制器,同时传递它显示错误
jquery-latest.min.js:4 POST http://localhost:5342/Purchase/ClearCart 500(内部服务器错误)
该方法没有传递给带有中断的 controller.Tried point.Here 是如何传递字符串 []
var items = $('.mids').map(function () {
return $(this).val()
}).get();
var counts = $('.counts').map(function () {
return $(this).val()
}).get();
if (BOLT.response.txnStatus == 'SUCCESS') {
alert("success");
$.ajax({
url: "/Purchase/ClearCart",
type: "POST",
contentType: "application/json",
//dataType: "text",
data: { mid: items, count: counts },
success: function (result) {
alert("success");
},
error: function (e) {
alert("Failed");
}
});
它returns"Failed"响应和上面的错误。
Controller
[HttpPost]
public void ClearCart(string[] mid,string[] count)
{
int uid=Convert.ToInt32(Session["uid"]);
userService.ClearCart(uid, mid,count);
}
这里是 Mid 和 count 里面的值:
您需要在 POST 期间将值绑定到对象。
- 创建Class待绑定
public class AjaxModel{
public List<int> mid {get;set;}
public List<int> count {get;set;}
// Alternatively, try list string
// public List<string> mid {get;set;}
// public List<string> count {get;set;}
}
- 修改 ClearCart 以在参数中包含
AjaxModel model
[HttpPost]
public ActionResult ClearCart(AjaxModel model)
{
return Content(model.mid.Count())
// int uid=Convert.ToInt32(Session["uid"]);
// userService.ClearCart(uid, model.mid, model.count);
}
- 修改 ajax 调用以包含
contentType: application/json
$.ajax({
url: "/Purchase/ClearCart",
type: "POST",
contentType: "application/json",
data: { mid: items, count: counts },
success: function (result) {
alert("success");
},
error: function (e) {
alert("Failed");
}
});
我通过一些调整解决了@Jerdine Sabio 的回答。
var clr = new Object();
clr.mid = items;
clr.count = counts;
$.ajax({
url: "/Purchase/ClearCart",
type: "POST",
contentType: "application/json",
dataType: JSON,
data: JSON.stringify(clr),
success: function (result) {
alert("success");
},
error: function (e) {
alert("Failed");
}
});
在控制器中
public class SampleModel
{
public string[] mid { get; set; }
public string[] count { get; set; }
}
[HttpPost]
public JsonResult ClearCart(SampleModel model)
{
int[] matids = Array.ConvertAll(model.mid, int.Parse);
int[] mcounts = Array.ConvertAll(model.count, int.Parse);
//rest of the code
}
我想使用 Ajax.But 将两个字符串数组从视图传递到控制器,同时传递它显示错误 jquery-latest.min.js:4 POST http://localhost:5342/Purchase/ClearCart 500(内部服务器错误) 该方法没有传递给带有中断的 controller.Tried point.Here 是如何传递字符串 []
var items = $('.mids').map(function () {
return $(this).val()
}).get();
var counts = $('.counts').map(function () {
return $(this).val()
}).get();
if (BOLT.response.txnStatus == 'SUCCESS') {
alert("success");
$.ajax({
url: "/Purchase/ClearCart",
type: "POST",
contentType: "application/json",
//dataType: "text",
data: { mid: items, count: counts },
success: function (result) {
alert("success");
},
error: function (e) {
alert("Failed");
}
});
它returns"Failed"响应和上面的错误。
Controller
[HttpPost]
public void ClearCart(string[] mid,string[] count)
{
int uid=Convert.ToInt32(Session["uid"]);
userService.ClearCart(uid, mid,count);
}
这里是 Mid 和 count 里面的值:
您需要在 POST 期间将值绑定到对象。
- 创建Class待绑定
public class AjaxModel{
public List<int> mid {get;set;}
public List<int> count {get;set;}
// Alternatively, try list string
// public List<string> mid {get;set;}
// public List<string> count {get;set;}
}
- 修改 ClearCart 以在参数中包含
AjaxModel model
[HttpPost]
public ActionResult ClearCart(AjaxModel model)
{
return Content(model.mid.Count())
// int uid=Convert.ToInt32(Session["uid"]);
// userService.ClearCart(uid, model.mid, model.count);
}
- 修改 ajax 调用以包含
contentType: application/json
$.ajax({
url: "/Purchase/ClearCart",
type: "POST",
contentType: "application/json",
data: { mid: items, count: counts },
success: function (result) {
alert("success");
},
error: function (e) {
alert("Failed");
}
});
我通过一些调整解决了@Jerdine Sabio 的回答。
var clr = new Object();
clr.mid = items;
clr.count = counts;
$.ajax({
url: "/Purchase/ClearCart",
type: "POST",
contentType: "application/json",
dataType: JSON,
data: JSON.stringify(clr),
success: function (result) {
alert("success");
},
error: function (e) {
alert("Failed");
}
});
在控制器中
public class SampleModel
{
public string[] mid { get; set; }
public string[] count { get; set; }
}
[HttpPost]
public JsonResult ClearCart(SampleModel model)
{
int[] matids = Array.ConvertAll(model.mid, int.Parse);
int[] mcounts = Array.ConvertAll(model.count, int.Parse);
//rest of the code
}