I'm trying to generate the qr code and pop up it in mvc. Below is the code
$("#generateQRCode").on('click', function (e) {
//TODO prevent deafualt
var Details =
{
cityId: $('#city_Id').val(),
cityTypeId: $('#Type_Id').val(),
busId: $('bus_Id').val(),
serialId: $('#serial_Id').val(),
makeId: $('#make_Id').val()
}
$.ajax({
traditional: true,
async: true,
type: 'GET',
// headers: { 'X-CSRF-TOKEN': $("input[name='__RequestVerificationToken']").val() },
url: "/Home/Index/",
dataType: 'json',
contentType: 'application/json',
data: JSON.stringify(Details),
//processData: false,
//cache: false,
success: function (data) {
if (data.result === true)
{
debugger;
$("#afterActionConfirmationModal").modal('show');
}
else {
debugger;
alert("error1");
}
},
error:
alert("error2"),
});
//controller
[HttpGet]
public IActionResult Index(object details)
{
}
当我调试时,我总是得到error2警报代码块,然后转到操作方法,并且对象“详细信息”值填充为值0。没有错误 消息正在显示。请帮帮我
答案 0 :(得分:4)
我总是收到error2警报
因为这不符合您的预期:
error: alert("error2")
这不会将alert()
设置为error
回调处理程序。这将立即执行alert()
,并将其结果(即undefined
)设置为error
回调处理程序。因此alert()
将显示是否存在错误,因为它将在AJAX调用甚至执行之前显示。
将其包装在用作回调的函数中,就像success
回调处理程序一样:
error: function () {
alert("error2");
}
更新:从下面的评论看来,您还期望C#的object
类型有很多优势。该类型没有有用的属性,因此无处可找到要发布到服务器的值。使用自定义类型:
public class Details
{
public int cityId { get; set; }
public int cityTypeId { get; set; }
public int busId { get; set; }
public int serialId { get; set; }
public int makeId { get; set; }
}
并使用该类:
public IActionResult Index(Details details)
您可能还需要将JSON.stringify(Details)
替换为Details
,因为您可能想发送对象本身而不是序列化的字符串。