在JAX调用中将Json数据发送到@ Html.Action

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在JAX调用中将Json数据发送到@ Html.Action相关的知识,希望对你有一定的参考价值。

我有一个div如下,

<div id="d1"></div>

其内容将使用AJAX调用填充部分视图。

以下是AJAX实现:

        $.ajax({
                        type: "POST",
                        url: '@Url.Action("GetCustReqChartData", "DA_CPC")',
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        data: "{'ProjectID':" + getUrlParameter('PID')"}",
                        success: function (JsonData)
                        {
                            $('#d1').load('@html.Action("PlotCurrentStatusCountTbl", "DA_CPC", new{ CurrentStatus = JsonData.StatusCount })');
    }
});

当我调用AJAX调用时,我收到错误:当前上下文中不存在名称“JsonData”。在以下行:

$('#d1').load('@Html.Action("PlotCurrentStatusCountTbl", "DA_CPC", new{ CurrentStatus = JsonData.StatusCount })');

如何将javascript变量传递给@Html.Action方法。

答案

将JsonData移出引号,如下所示的变量响应:

$.ajax({            
    success: function (response) {                
        $('#test').append('<li>' + 
            response[i].displayName + '(Not Approved)</li>');
    }
}
另一答案

问题:Razor不知道JsonData是什么。 JsonData未填充,在浏览器中运行之前甚至不存在。当视图在javascript之前和完全不同的上下文中呈现时,Razor被服务器解释和运行。

解决方案:jQuery load()有一个带有数据参数的重载。

$('#d1').load('@Html.Action("PlotCurrentStatusCountTbl", "DA_CPC")', {CurrentStatus: JsonData.StatusCount});

这样Razor正确格式化URL,参数在运行时由javascript确定。

以上是关于在JAX调用中将Json数据发送到@ Html.Action的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 HttpClient 在 POST 请求中将 JSON 数据作为正文发送

获取“MessageBodyWriter not found for media type=application/json”试图通过 JAX-RS Web 服务发送 JSON 对象

如何在 Swift 中将 JSON 转换为数据类型?

在 PHP 中将 NSMutableArray 发送到 Json 服务器

如何在 Struts 2 中将 JSON 绑定到 bean

如何在php rabbitmq中将完整对象作为消息从生产者发送到消费者