gpt4 book ai didi

jquery - 使用ajax发送JSON到action,参数为null(返回内部服务器错误500)

转载 作者:行者123 更新时间:2023-12-01 07:54:50 26 4
gpt4 key购买 nike

我正在尝试使用 ajax 和 JSON 从操作返回结果,并且它在不同页面/操作上工作得很好,但这个不起作用。

我的 JavaScript:

var lookup = $("#textbox").val();

$.ajax({
url: '/Controller/GetId',
type: 'POST',
dataType: 'json',
data: lookup,
contentType: 'application/json; charset=utf-8',
success: function (data) {
result = data;
}
});

我的行动:

public ActionResult GetId(string lookup)
{
ActionResult result = View();

Order order =
db.Orders
.Where(o => o.Code == lookup)
.FirstOrDefault();

result = Json(order.Id.ToString());

return result;
}

现在,我遇到了以下情况,但我无法真正解释:

  1. 使用上面的代码,console.log 将显示一切正常,Ajax 方法会抛出 500 内部服务器错误,并且我的操作中的断点命中(就像该操作未调用或什么?)。
  2. 使用上面的代码,除了在查找周围使用 JSON.stringify 之外,我的断点命中,但参数为 NULL。当我继续通过操作进行调试时,debugger.exe 将卡住并崩溃。

我在不同的页面上有类似的情况,它将列表发布为 JSON.stringify,我的操作将其保存到数据库并返回结果消息。这工作得很好!我完全不明白为什么上面的方法不起作用。

编辑我已经缩小了范围(只是一点点):事实证明,错误 500 内部服务器错误被抛出,因为我的操作中的代码没有正确处理空值。由于参数始终为 null,因此 JSON 未(正确)发送,因此它总是会中断/崩溃。我现在添加了一个 catch,因此 JSON 现在将正确返回错误(表示找不到我的订单)。

编辑2我不知道为什么这种情况不起作用,而我的另一种情况却起作用。但是,解决方案是传递模型而不是纯字符串,并在整个模型上使用 stringify。最后,我的操作还需要接受模型:

var lookup = { lookup: $("#textbox").val() };

$.ajax({
url: '/Controller/GetId',
type: 'POST',
dataType: 'json',
data: JSON.stringify(lookup),
contentType: 'application/json; charset=utf-8',
success: function (data) {
result = data;
}
});

public ActionResult GetId(Order model)
{
ActionResult result = View();

Order order =
db.Orders
.Where(o => o.Lookup == model.Lookup)
.FirstOrDefault();

result = Json(order.Id.ToString());

return result;
}

最佳答案

尝试

var lookup = $("#textbox").val();

$.ajax({
url: '/Controller/GetId',
type: 'POST',
dataType: 'json',
data: {lookup: JSON.stringify(lookup)}, // change this
contentType: 'application/json; charset=utf-8',
success: function (data) {
result = data;
}
});

关于jquery - 使用ajax发送JSON到action,参数为null(返回内部服务器错误500),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25419879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com