将Json数据返回给Ajax调用

3

我在MVC中有一个方法,我向其发布请求并需要返回一些数据以进行处理。 这是我发布请求和返回值为json数据的MVC方法。

[HttpPost]
public JsonResult GetCalculateAmortizationSchedule()
{
    var data = ...
    var httpClient = new HttpClient();
    var response = httpClient.PostAsJsonAsync("http://localhost:62815/v1/APR/CalculateAmortizationSchedule", data).Result;
    var returnValue = response.Content.ReadAsAsync<Dictionary<int, AmItem>>().Result;
    return Json(returnValue);
}

这是我的AJAX调用,成功运行了MVC方法。

$('#MyForm').submit(function (e) {
    debugger;
    $.ajax({
        url: "/home/GetCalculateAmortizationSchedule",
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",                
        success: function (result) {
            alert("success");
        },
        error: function (result) {
            alert("error");
        }
    });
    e.preventDefault();
});

我的问题是如何捕获方法的返回值?当我运行 return Json(returnValue) 后,该值未返回到 Ajax 方法,而我看到的是错误提示框,而不是成功提示框。


1
尝试弹出你的结果,以查看返回的数据。应该有一些帮助你调试的信息。所以,不要使用alert("error"),而是使用alert(result)。 - garek007
开发者工具的控制台或网络选项卡将向您展示正在发生的事情,并且应该是您进行调试的首要选择。 - Jaromanda X
@garek007 它是 [object Object]。 - nik
这将为您提供更多详细信息,但如果出现错误,我想这与您的PHP代码有关。您使用什么框架? - garek007
@garek007 .NET框架中的MVC - nik
显示剩余9条评论
3个回答

3

试试这个:

     success: function (result) {alert(JSON.stringify(result)); }

从您在下面评论中发布的错误来看,似乎字典不可序列化。尝试按其他答案中提到的设置AllowGet。如果不起作用,您将需要将字典转换为可序列化的其他对象。或者您可以按照以下步骤在控制器中将字典序列化为json。 如何在C#中将字典转换为JSON字符串?

我遇到了这个错误:"System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089] 无法进行字典的序列化/反序列化,键必须是字符串或对象。 - nik

1
如果您没有得到值,应该添加JsonBehavious。
返回Json(returnValue, JsonRequestBehavior.AllowGet)。

1

Try this piece of code :

 return Json(returnValues, JsonRequestBehavior.AllowGet);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接