C# asp.net mvc ajax发送两个参数
为什么TestData不接收任何内容 POST 500(内部服务器错误) index.cshtml:C# asp.net mvc ajax发送两个参数,c#,ajax,asp.net-mvc,asp.net-mvc-4,C#,Ajax,Asp.net Mvc,Asp.net Mvc 4,为什么TestData不接收任何内容 POST 500(内部服务器错误) index.cshtml: @{ ViewBag.Title = "Index"; } <h2>Index</h2> <script src="~/Scripts/knockout-2.2.0.js"></script> <button data-bind="click: sendata">send data</button> <script
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<script src="~/Scripts/knockout-2.2.0.js"></script>
<button data-bind="click: sendata">send data</button>
<script>
function MyViewModel() {
var self = this;
self.sendata = function () {
$.ajax({
type: 'POST',
url: 'Home/TestData',
contentType: 'application/json; charset=utf-8',
data: { json: 'json', date: 'date' },
dataType: 'json'
});
}
}
ko.applyBindings(new MyViewModel());
</script>
您可以像这样使用参数
数据:
data: { json: 'json', date: 'date' },
json=json&date=date
即使您指定内容类型为json
,jQuery也会使用它来序列化数据,因此数据的发送方式不是发送json,而是如下所示:
data: { json: 'json', date: 'date' },
json=json&date=date
但您的服务器希望提供json,因此模型绑定失败
相反,您应该在进行AJAX调用之前手动将数据序列化为json:
data: JSON.stringify({ json: 'json', date: 'date' }),
其余的代码似乎没有问题。或者,删除contentType:'application/json;charset=utf-8',
选项,因此它使用默认的应用程序/x-www-form-urlencoded;字符集=UTF-8