【发布时间】:2015-10-07 07:02:11
【问题描述】:
我正在通过 ajax 发布一个 json 对象
$('#btnOrder').click(function (e) {
var jsonData =
{
ScheduleDate: '20/07/2015 17:00',
UnitNumber: '425196',
Length: 0.00
}
var url = "http://mywebsite.com/Home/MakeOrder";
$.ajax({
type: "POST",
dataType: "json",
url: url,
data: JSON.stringify(jsonData),
contentType: "application/json",
success: function(result) {
}
});
});
执行以下操作:
[HttpPost]
public PartialViewResult MakeOrder(string jsonData)
{
// some actions
return this.PartialView("_Summary", summaryModel);
}
型号:
public class OrderItem
{
public DateTime? ScheduleDate {get;set;}
public string UnitNumber {get;set;}
public float Length {get;set;}
}
jsonData 参数值总是为空。
当我把它变成通过 ajax 调用时
var url = "http://mywebsite.com/Home/MakeOrder/?jsonData=" + jsonData
那么参数就可以作为json字符串了。
我需要邮寄。
编辑 ***** JS 值
我在 Chrome 中调试,jsonData 传递给 'ajax data:' 是
JSON.stringify(jsonData)
给予
jsonData={"ScheduleDateTime":"20/07/2015 17:00","UnitNumber":"425196","Length":0.00}
如果通过非字符串化是:
jsonData = Object {"ScheduleDateTime":"20/07/2015 17:00","UnitNumber":"425196","Length":0.00}
【问题讨论】:
-
您是否尝试过一些简单的方法,例如更改要传递的数据元素:{jsonData: JSON.stringify(jsonData)},看看它是否正常工作?您是否还检查过浏览器工具以查看实际发送回浏览器的内容(使用 fiddler 或浏览器的网络跟踪?)
-
@David 我正在 Chrome 中调试 - 请参阅上面的编辑了解我得到的值
-
那么尝试按照我的建议传递数据是否可行?
-
@David 不,它不起作用。实际上从这里没有解决方案。奇怪的是,我从互联网上获取了 2 个示例,并完全按照我的应用程序中的方式应用它们,但它们也不起作用。在动作控制器中获取 Request.Form 值对我也不起作用。一切都是空的。尽管我的同事在他的本地版本中做了我正在做的事情并且对他有用。所以一定有其他东西影响我的代码,否则它就是不喜欢我哈哈。无论如何,我得到了我同事的工作版本,所以问题解决了。谢谢大家
-
很高兴你最终找到了一个可行的解决方案。如果是我,我真的不知道是什么导致了这个问题,所以我需要找出问题所在。正如我所说,很高兴你设法在其他地方找到了解决方案。
标签: ajax json asp.net-mvc post controller-action