我有以下ajax请求,其中我尝试将JSON对象发送到服务器:
function sendData(subscriptionJson) {
$.ajax({
type: "POST",
url: '@Url.Action("SubscribeSecurities", "Subscription")',
data: "{'subscriptions': subscriptionJson}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
console.log("success response: " + response.responseText);
alert("Hello: " + response.Name + " .\nCurrent Date and Time: " + response.DateTime);
},
failure: function (response) {
console.log("failure response: " + response.responseText);
alert(response.responseText);
},
error: function (response) {
console.log("error response: " + response.responseText);
alert(response.responseText);
}
});
}
根据this post中的最佳答案,我在"数据"周围添加了引号。属性,但我收到一条错误,说明" subscriptionJSON"没有得到承认。我尝试使用示例字符串进行测试,如post:data:"{'foo':'foovalue', 'bar':'barvalue'}",
,但是当控制器获取subscriptionJson对象的参数时,它为null。
通过POST请求将JSON对象发送到ASP .NET MVC控制器的官方方式是什么?
答案 0 :(得分:3)
您的问题是因为您没有发送有效的JSON。您需要用双引号将键包装起来。此外,subscriptionJson
是代码中的文字字符串。你需要它是一个字符串变量。
data: '{"subscriptions": ' + subscriptionJson + '}',
或者,更好的是,只需为jQuery提供一个普通对象,让它为你编码值:
data: { subscriptions: subscriptionJson },
答案 1 :(得分:0)
在Ajax语句之前创建一个简单的java脚本对象。使用数据
构建ajax选项data : { parameterName : jsobject }
注意:(没有引号)
确保控制器操作方法具有相同的parameterName。