通过ajax

时间:2015-08-13 10:10:32

标签: ajax asp.net-mvc

我的帖子操作有问题,收到空对象 我有这个javascript代码来调用该操作

 function forwardMsg(result) {
        
            $.ajax({
                type: 'POST',
                url: '@Url.Action("ForwardHCFASuspendedMessage")',
                dataType: 'json',
                data:JSON.stringify( {
                     messageId: "@Model.MessageId",
                    result: result,
                    serviceLines: "@Model.ServiceLineSegment"
                }),

                error: function (response) {
                    alert(response.responseText);
                },
                success: function (response) {
                    alert(response);
                }

            });
        }
 ,并接收一个空对象,如此图所示 enter image description here

3 个答案:

答案 0 :(得分:0)

尝试使用jQuery的$post()

var data = {
    messageId: "@Model.MessageId",
    result: result,
    serviceLines: "@Model.ServiceLineSegment"
};

$.post('@Url.Action("ForwardHCFASuspendedMessage")', JSON.stringify(data))
.success(function (response) {
    alert(response);
})
.fail(function (response) {
    alert(response.responseText);
});

这可以处理将JSON数据发布到端点的设置和ajax调用。这意味着所有的辛勤工作都是为你完成的,你需要提供的是网址和数据。

编辑:

在没有serviceLines: "@Model.ServiceLineSegment"的情况下尝试通话,看看会发生什么。在进行POST调用之前,您需要将其转换为JavaScript数组,因为看到了:

System.Collections.Generic .List 1 [XIP.Infrastructure.Data.Claims.ServiceLineSegment_HCFA]“`

请求正文中的

不是你想要的。我想你可以这样做:

var data = {
    messageId: "@Model.MessageId",
    result: result,
    serviceLines: JSON.parse('@Html.Raw(Model.ServiceLineSegment)')
};

答案 1 :(得分:0)

function forwardMsg(result) {
var obj = {messageId: "@Model.MessageId",
                    result: result,
                    serviceLines: "@Model.ServiceLineSegment"};
        var jsonStringHere = JSON.stringify(obj);

            $.ajax({
                type: 'POST',
                url: '@Url?action=ForwardHCFASuspendedMessage',
                dataType: 'json',
                data: {jsonStringReceiver:jsonStringHere},
                error: function (response) {
                    alert(response.responseText);
                },
                success: function (response) {
                    alert(response);
                }

            });
        };

答案 2 :(得分:0)

看看这个:

enter image description here

我的代码在cshtml:

$(function () {
    function forwardMsg() {
        var dataToSend = JSON.stringify({
            Id: @Model.Id,
            SomeData: '@Model.SomeData',
            Result: "Another test data"
        });

        $.ajax({
            type: 'POST',
            url: '@Url.Action("ForwardHCFASuspendedMessage", "Home")',
            dataType: 'json',
            contentType: 'application/json',
            data: dataToSend,

            error: function (response) {
                alert(response.responseText);
            },
            success: function (response) {
                alert(response);
            }

        });
    }

    $('body').on('click', '#myBtn', forwardMsg);
});

添加后,它开始适用于我:

contentType: 'application/json',