Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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
如何接收post值MVC3(Jquery Ajax)_Jquery_Vb.net_Asp.net Mvc 3 - Fatal编程技术网

如何接收post值MVC3(Jquery Ajax)

如何接收post值MVC3(Jquery Ajax),jquery,vb.net,asp.net-mvc-3,Jquery,Vb.net,Asp.net Mvc 3,我是MVC和这种编程的新手,我想这很简单,但经过5个小时的搜索和尝试后,我觉得自己很不适应。在我看来,我有一个帖子是这样的 $.ajax({ url: '@Url.Action("Moo")', type: "post", dataType: "string", contentType: "json", data: JSON.stringify({"foo": "bar"}), success: f

我是MVC和这种编程的新手,我想这很简单,但经过5个小时的搜索和尝试后,我觉得自己很不适应。在我看来,我有一个帖子是这样的

 $.ajax({
        url: '@Url.Action("Moo")',
        type: "post",
        dataType: "string",
        contentType: "json",
        data: JSON.stringify({"foo": "bar"}),
        success: function (data) {}
        });
    });
Function Moo(test As String) As ActionResult
    Return View()
End Function
然后我在控制器中有一个函数,看起来像这样

 $.ajax({
        url: '@Url.Action("Moo")',
        type: "post",
        dataType: "string",
        contentType: "json",
        data: JSON.stringify({"foo": "bar"}),
        success: function (data) {}
        });
    });
Function Moo(test As String) As ActionResult
    Return View()
End Function
当我运行它时,调试器显示我得到了Return语句,但是我没有得到任何要赋值的测试(foo:bar)

我需要考虑的另一个问题是,当我从ajax函数接收数据时,我是否可以将其转换回JSON,或者我是否必须在模型中创建自己的类并将变量分配给该类


任何输入都将被告知

参数/属性名称应匹配

因此,如果您希望在操作中使用名为
test
的值,则需要使用键
test
发送该值。因此,将
foo
更改为
test

$.ajax({
        url: '@Url.Action("Moo")',
        type: "post",
        dataType: "string",
        contentType: "application/json",
        data: JSON.stringify({"test": "bar"}),
        success: function (data) {}
        });
    });
注意,JSON的正确内容类型是
application/JSON

如果您有更复杂的数据,比如
JSON.stringify({“test”:“bar”,“test1”:“bar1”}),
您可以在服务器端创建一个对象(很抱歉C#)

然后,您可以在行动中使用此模型:

Function Moo(test As MyClass) As ActionResult
    Return View()
End Function

MVC模型绑定器将负责解析数据和填充属性。您可以从这里开始学习模型绑定:

这是您希望尝试的另一种方法 [尽管可能不是最好的]

$.ajax({
        url: '@Url.Action("Moo")?test="testdata"',
        type: "post",
        dataType: "string",
        contentType: "json",
        data: JSON.stringify({"test": "bar"}),
        success: function (data) {}
        });
    });

您传递的参数名称应与服务器上操作方法的参数名称匹配。我认为您必须更改以下内容:

$.ajax({
    url: '@Url.Action("Moo")',
    type: "post",
    dataType: "text", //<---------------------this
    contentType: "application/json", // <-----this 
    data: JSON.stringify({"foo": "bar"}),
    success: function (data) {}
    });
});
数据类型包括:

  • “xml”
    :返回可通过jQuery处理的xml文档
  • “html”
    :以纯文本形式返回html;在DOM中插入时,将计算包含的脚本标记
  • “script”
    :将响应评估为JavaScript并以纯文本形式返回
  • “json”
    :将响应评估为json并返回JavaScript对象
  • “jsonp”
    :使用jsonp加载JSON块。在URL末尾添加一个额外的“?callback=?”以指定回调
  • “text”
    :纯文本字符串

非常感谢,我现在就像圣诞节前夕的孩子一样。:)如果我的数据内容真的很大,你认为最好的方法是什么?我可以将JSON转换回服务器上的对象吗?或者我可以创建一个模型并分配值吗?基本上,你可以发送任何复杂的模型。如果您在服务器端创建一个模型对象,MVC模型绑定将处理它:那么这只是一个想法,所以我无论如何不能只接受JSON?再次感谢你的回答,这真的让我开心