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

标签 jquery ajax asp.net-mvc json

我正在尝试使用 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/

相关文章:

javascript - JSON 从 Newtonsoft 到 JavaScript

asp.net-mvc - MVC - 它只是一个 3 层模型吗?

ajax - 使用HandleError属性类处理Http和Ajax请求的错误

JQuery ul li 单击移至列表中的下一个

javascript - GAS 中的 Access-Control-Allow-Origin header

javascript - 如何减少 Jquery/Ajax 代码 -> 删除重复

javascript - XMLHttpRequest 在页面完全加载之前返回响应

javascript - 淡入/淡出滚动菜单

javascript - Owl Carousel + URL + 幻灯片项目更改

javascript - jQuery Ajax 加载不工作