在我的asp.net MVC 3应用程序中。
以下ajax调用在我的开发机器上运行良好,但是当我在IIS服务器上发布应用程序时它失败或对象总是发送空值来保存功能。
$.ajax
({
url: '../MyPath/save',
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({'Model': object}),
success: function (data) {
alert("success");
return true;
}
});
[HttpPost]
public JsonResult Save(SampleModel Model)
* Model values always null over IIS *
{
}
我甚至试图使用@ url.action(),甚至尝试使用另一个浏览器,但仍存在同样的问题。
任何人都知道为什么这不能用于IIS调用。?
请建议。感谢
答案 0 :(得分:0)
我认为你应该使用jQuery.parseJSON()
$.ajax({
url: '../MyPath/save',
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: jQuery.parseJSON({'Model': object}),
success: function (data) {
alert("success");
}
});
来自文档:
Passing in a malformed JSON string may result in an exception being thrown.
For example, the following are all malformed JSON strings:
{test: 1}
(测试周围没有双引号)。{'test': 1}
('test'使用单引号而不是双引号)。答案 1 :(得分:0)
您的JavaScript将导致模型双重包装,绑定过程将在Model
类中查找SampleModel
属性。要直接绑定它应该是:
$.ajax({
url: '../MyPath/save',
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(object),
success: function (data) {
alert("success");
}
});