Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将json从JQuery发送到MVC控制器时出现问题_Javascript_Jquery_Json_Asp.net Mvc - Fatal编程技术网

Javascript 将json从JQuery发送到MVC控制器时出现问题

Javascript 将json从JQuery发送到MVC控制器时出现问题,javascript,jquery,json,asp.net-mvc,Javascript,Jquery,Json,Asp.net Mvc,我将Json从Jquery发送到动作控制器,但由于某种原因,Json字符串中的第一个和最后一个元素在我的动作控制器中没有被正确接收,似乎有一个大括号被添加为最后一个元素的值,当第一个元素是一个可为null的字段或者如果它是一个int,那么它的值总是0。 这是我的JQuery代码: $(function () { $("#myButton").click(function () { var student= JSON.stringify($("#myForm

我将Json从Jquery发送到动作控制器,但由于某种原因,Json字符串中的第一个和最后一个元素在我的动作控制器中没有被正确接收,似乎有一个大括号被添加为最后一个元素的值,当第一个元素是一个可为null的字段或者如果它是一个int,那么它的值总是0。 这是我的JQuery代码:

$(function () {
        $("#myButton").click(function () {
            var student= JSON.stringify($("#myForm").serialize());
 alert(student);
 $.ajax({
                type: 'post',
                url: $("#myForm").data("url"),
                data: JSON.stringify({ 'policy': student}),
                success: //more code..
})
我正在使用警报显示
$(“#myForm”).serialize()的值,并且在执行警报时正确设置了值。问题出现在通往动作控制器的路上。这是警报消息显示的内容:

    "first_field=7.5&aut_id=3456690&..........more info in here no 
problem..........&birthday=&last_field="
对于动作控制器接收到的
json字符串
,它得到的结果是:
first\u field=null(在我的模型中是一个可为null的字段)
last\u field=“\\\”\“}”
。它包含3个转义字符,因此我认为接收的值是
=\”“}

应该发生什么事???中间的所有其他值都被正确地接收,只是边缘中的那些值

这是我的动作控制器:

     [HTTPPost]
     public ActionResult EditStudent(Student student)
    {
    //some code...
    }

您可以使用序列化数据发送数据

$.ajax({
    ....
    data: $("#myForm").serialize(),
将使用默认的
”应用程序/x-www-form-urlencoded;对于
contentType

如果对数据进行字符串化,则还需要将
contentType
设置为
'application/json',
,以便
DefaultModelBinder
使用
JsonValueProvider
转换数据,在这种情况下,需要更改格式

$.ajax({
    ....
    data: JSON.stringify($("#myForm").serialize()),
    contentType: 'application/json; charset=UTF-8',

您不需要将任何内容字符串化,当然也不需要两次。只需使用
数据:$(“#myForm”).serialize()
@StephenMuecke即可,谢谢。如果你想把它作为答案发布,你可以这样做,我会选择它作为答案:)