【问题标题】:An object with property values of null is received when Jquery.post is used使用 Jquery.post 时收到属性值为 null 的对象
【发布时间】:2014-11-19 05:42:46
【问题描述】:

切换到 ASP.NET MVC 后,我再也不需要向控制器操作发送 JSON 对象,因此我可以轻松地使用 jqeury.post 进行 AJAX 调用。所有的动作方法都只是接收原始类型。但是最近我不得不发送一个 JSON 对象,所以我这样做了:

$.post(myUrl,JSON.stringify({param1:myJsonObject}),success(data){...},'json');

当我在动作方法的开头放置一个断点时,令我惊讶的是,我发现接收到的对象的所有属性都是空的。但是,如果我在发送之前不“JSON.stringify”对象,我可以正确获取字符串属性,但那些具有 DateTime 类型的总是 01.01.0001..

现在,如果我尝试,可以说,老式的方式,一切都会好起来的:

        $.ajax({
        url: myUrl,
        type: 'POST',
        data: JSON.stringify({param1:myJsonObject}),
        contentType: 'application/json',
        dataType: 'json',
        success: function (data) {
           //any code
        }
    });

所有属性都设置为正确的值。看了jquery.post的源码,发现没有设置contentType,所以设置为application/json。但这也无济于事。 jquery 版本是 1.8.2。你知道出了什么问题吗?

【问题讨论】:

  • JSON.stringify({param1:myJsonObject}) 应该看起来像 { param1: JSON.stringify(myObject) }
  • 您如何发送DateTime 值。如果它在服务器上的01/01/0001,那么它表明你发送的值无效,因此不绑定所以它是默认的(DateTime.Min)值
  • 不,如果我在 Chrome 脚本调试器中调试它,我可以看到日期是有效日期。除此之外,我还测试了单独发送该日期,没有这样的问题。因此,如果该日期在对象内部,则不正确,但如果它是单独的参数,则很好。
  • @johan,我试过了,没用。除此之外,我对 $.ajax 版本做同样的事情并且工作得很好
  • 如果你发回一个代表你的模型的javascript对象(例如{id: 1, name: 'Mike', BirthDate: '1/1/1970' },那么如果action方法接受模型作为参数,它只需要$.post(myUrl, myJsonObject)

标签: jquery ajax asp.net-mvc json asp.net-mvc-4


【解决方案1】:

试试这个

$.post(myUrl,JSON.stringify({param1:myJsonObject})).success(function(data){

 },'json');

【讨论】:

  • 我就是这么做的。看不出您的建议与我在问题中发布的内容有什么区别。
  • 我认为你有一些错别字。还是我错了?尤其是这部分JSON.stringify({param1:myJsonObject})).success。有额外的“)”,你把“。”而不是“,”
  • 你错过了 in "function" success(function(data){ },'json');
  • 嗯,现在我明白了,所以这不是错字。 :)
猜你喜欢
  • 2021-12-23
  • 2017-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
相关资源
最近更新 更多