Javascript 将json从JQuery发送到MVC控制器时出现问题
我将Json从Jquery发送到动作控制器,但由于某种原因,Json字符串中的第一个和最后一个元素在我的动作控制器中没有被正确接收,似乎有一个大括号被添加为最后一个元素的值,当第一个元素是一个可为null的字段或者如果它是一个int,那么它的值总是0。 这是我的JQuery代码: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
$(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即可,谢谢。如果你想把它作为答案发布,你可以这样做,我会选择它作为答案:)