使用Jquery.post时,将接收属性值为null的对象

使用Jquery.post时,将接收属性值为null的对象,jquery,ajax,asp.net-mvc,json,asp.net-mvc-4,Jquery,Ajax,Asp.net Mvc,Json,Asp.net Mvc 4,切换到ASP.NETMVC后,我再也不需要向控制器操作发送JSON对象,所以我可以轻松地使用jqeury.post进行AJAX调用。所有操作方法都只是接收基元类型。但最近我不得不发送一个JSON对象,所以我这样做了: $.post(myUrl,JSON.stringify({param1:myJsonObject}),success(data){...},'json'); 当我在action方法的开头放置断点时,出乎意料的是,我发现接收到的对象的所有属性都为null。但是,如果我在发送对象之前

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

$.post(myUrl,JSON.stringify({param1:myJsonObject}),success(data){...},'json');
当我在action方法的开头放置断点时,出乎意料的是,我发现接收到的对象的所有属性都为null。但是,如果我在发送对象之前没有“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。你知道怎么了吗?

试试这个

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

 },'json');
试试这个

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

 },'json');
试试这个

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

 },'json');
试试这个

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

 },'json');


JSON.stringify({param1:myJsonObject})
应该类似于
{param1:JSON.stringify(myObject)}
如何发送
DateTime
值。如果其
01/01/0001
在服务器上,则表明您发送的值无效,因此不绑定so,并且是默认值(
DateTime.Min
)否,如果我在Chrome script debugger中调试它,我可以看到该日期是有效日期。除此之外,我还测试了单独发送日期,没有这样的问题。所以如果这个日期在一个对象内,它是不正确的,但是如果它是一个单独的参数,那么它就可以了。@johan,我试过了,那没有用。除此之外,我对$.ajax版本也做了同样的事情,如果您发回一个表示您的模型的javascript对象(例如,
{id:1,name:'Mike',BirthDate:'1/1/1970'}
那么它只需要是
$.post(myUrl,myJsonObject)
如果操作方法接受模型作为参数。
JSON.stringify({param1:myJsonObject})
应该类似于
{param1:JSON.stringify(myObject)}
如何发送
DateTime
值。如果服务器上的
01/01/0001
,则表明发送的值无效,因此不绑定so,这是默认值(
DateTime.Min
)valueNo,如果我在Chrome script debugger中调试它,我可以看到该日期是一个有效日期。除此之外,我还测试了单独发送该日期,没有这样的问题。因此,如果该日期在对象内部,则不正确,但如果它是一个单独的参数,则可以。@johan,我尝试过,但没有帮助。除此之外,我执行与$.ajax版本相同,效果很好。如果您发回一个表示您的模型的javascript对象(例如,
{id:1,name:'Mike',BirthDate:'1/1/1970'}
,那么它只需要是
$.post(myUrl,myJsonObject)
,如果操作方法接受模型作为参数。
JSON.stringify({param1:myJsonObject})
应该类似于
{param1:JSON.stringify(myObject)}
如何发送
DateTime
值。如果服务器上的
01/01/0001
,则表明您发送的值无效,因此不绑定so,这是默认值(
DateTime.Min
)valueNo,如果我在Chrome script debugger中调试它,我可以看到该日期是一个有效日期。除此之外,我还测试了单独发送该日期,没有这样的问题。因此,如果该日期在对象内部,则不正确,但如果它是一个单独的参数,则可以。@johan,我尝试过,但没有帮助。除此之外,我执行与$.ajax版本相同,效果很好。如果您发回一个表示您的模型的javascript对象(例如,
{id:1,name:'Mike',BirthDate:'1/1/1970'}
,那么它只需要是
$.post(myUrl,myJsonObject)
,如果操作方法接受模型作为参数。
JSON.stringify({param1:myJsonObject})
应该类似于
{param1:JSON.stringify(myObject)}
如何发送
DateTime
值。如果服务器上的
01/01/0001
,则表明您发送的值无效,因此不绑定so,这是默认值(
DateTime.Min
)valueNo,如果我在Chrome script debugger中调试它,我可以看到该日期是一个有效日期。除此之外,我还测试了单独发送该日期,没有这样的问题。因此,如果该日期在对象内部,则不正确,但如果它是一个单独的参数,则可以。@johan,我尝试过,但没有帮助。除此之外,我执行与$.ajax版本相同,并且工作正常如果您发回一个表示您的模型的javascript对象(例如,
{id:1,name:'Mike',BirthDate:'1/1/1970'}
,那么它只需要是
$.post(myUrl,myJsonObject)
如果操作方法接受模型作为参数。我就是这么做的。看不出你的建议和我在问题中发布的内容之间有什么区别。我认为你有一些拼写错误。或者我错了吗?尤其是这部分
JSON.stringify({param1:myJsonObject})。success
有额外的“,”而不是“,”你错过了“函数”成功(函数(数据){},'json')的成功;嗯,现在我明白了,所以这不是一个拼写错误。:)我就是这么做的。你的建议和我在问题中发布的内容没有什么区别。我想你有一些拼写错误。还是我错了?尤其是这部分
json.stringify({param1:myJsonObject})).success
.There's extra“)”你在“函数”success(函数(数据){},'json')中放了“.”而不是“,”你错过了成功;嗯,现在我明白了,所以这不是打字错误。:)我就是这么做的。我看不出你的建议和我在我的问题中发布的有什么区别。我想你有一些典型的错误