Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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
C# 从控制器返回PartialView时发生JSON.parse错误_C#_.net_Ajax_Asp.net Mvc - Fatal编程技术网

C# 从控制器返回PartialView时发生JSON.parse错误

C# 从控制器返回PartialView时发生JSON.parse错误,c#,.net,ajax,asp.net-mvc,C#,.net,Ajax,Asp.net Mvc,我有以下ajax调用 $.ajax({ type: "POST", url: url, dataType: "json", data: { occupants: occupants }, success: function (data) { $("#summaryContent").html(data); }, error: function (XMLH

我有以下ajax调用

    $.ajax({
        type: "POST",
        url: url,
        dataType: "json",
        data: { occupants: occupants },
        success: function (data) {
            $("#summaryContent").html(data);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            console.log("Status: " + textStatus);
            console.log("Error: " + errorThrown);
        }
    });
Error: SyntaxError: JSON.parse Error: Invalid character at position:5
还有一个像这样的控制器

    [HttpPost]
    public PartialViewResult Verification(List<OccupantDto> occupants)
    {
        //do stuff
        return PartialView();
    }

我尝试从我的ajax调用中删除
数据类型:“json”
,这样就删除了错误,并呈现了我的部分视图,但是,在我的控制器中,
用户
是一个空列表。添加
数据类型:“json”
会在我的控制器中填充
用户
,但会抛出一个错误。

$.ajax
方法调用中的这一部分

dataType: "json",
告诉jQuery您希望服务器的结果是一个有效的json字符串。因此,jQuery将尝试显式地将其解析为js对象(使用
JSON.parse()
方法),并假设它是一个有效的JSON字符串响应,因为您向jQuery保证使用
数据类型:“JSON”
选项

但在本例中,您将返回一个视图结果,它只是HTML标记。因此无法将其解析为javascript对象<如果要解析的字符串不是有效的JSON,则code>JSON.parse()将引发SyntaxError异常。这是因为parse方法调用崩溃,因此它执行
$.ajax
方法的
错误处理程序

只需删除指定
数据类型的那一行。这应该行得通

$.ajax({
    type: "POST",
    url: url,
    data: { occupants: occupants },
}).done(function (data) {
    $("#summaryContent").html(data);
}).fail(function (XMLHttpRequest, textStatus, errorThrown) {
    console.log("Status: " + textStatus);
    console.log("Error: " + errorThrown);
});
var occupants = [{ name: "Scott",id:4},{ name: "Shyju",id:6}];
$.ajax({
    type: "POST",
    url: '@Url.Action("Verification")',
    data: { occupants: occupants }
})
在大多数情况下,您不必指定
数据类型
属性值
。如果未指定任何内容,jQuery将根据返回的响应的mime类型尝试推断它

现在,只要您有一个有效的项目数组(与
occumentdto
的结构相匹配),您的
accumbers
参数将由模型绑定器正确映射,并且不会为空集合

假设
occumentdto
具有
Id
Name
属性(即set表公共属性),这应该可以工作

$.ajax({
    type: "POST",
    url: url,
    data: { occupants: occupants },
}).done(function (data) {
    $("#summaryContent").html(data);
}).fail(function (XMLHttpRequest, textStatus, errorThrown) {
    console.log("Status: " + textStatus);
    console.log("Error: " + errorThrown);
});
var occupants = [{ name: "Scott",id:4},{ name: "Shyju",id:6}];
$.ajax({
    type: "POST",
    url: '@Url.Action("Verification")',
    data: { occupants: occupants }
})

从jQuery 3.0开始,将删除
success()
error()
complete()
回调。您可以使用
done()
fail()
always()

$.ajax
方法调用中使用此部分

dataType: "json",
告诉jQuery您希望服务器的结果是一个有效的json字符串。因此,jQuery将尝试显式地将其解析为js对象(使用
JSON.parse()
方法),并假设它是一个有效的JSON字符串响应,因为您向jQuery保证使用
数据类型:“JSON”
选项

但在本例中,您将返回一个视图结果,它只是HTML标记。因此无法将其解析为javascript对象<如果要解析的字符串不是有效的JSON,则code>JSON.parse()
将引发SyntaxError异常。这是因为parse方法调用崩溃,因此它执行
$.ajax
方法的
错误处理程序

只需删除指定
数据类型的那一行。这应该行得通

$.ajax({
    type: "POST",
    url: url,
    data: { occupants: occupants },
}).done(function (data) {
    $("#summaryContent").html(data);
}).fail(function (XMLHttpRequest, textStatus, errorThrown) {
    console.log("Status: " + textStatus);
    console.log("Error: " + errorThrown);
});
var occupants = [{ name: "Scott",id:4},{ name: "Shyju",id:6}];
$.ajax({
    type: "POST",
    url: '@Url.Action("Verification")',
    data: { occupants: occupants }
})
在大多数情况下,您不必指定
数据类型
属性值
。如果未指定任何内容,jQuery将根据返回的响应的mime类型尝试推断它

现在,只要您有一个有效的项目数组(与
occumentdto
的结构相匹配),您的
accumbers
参数将由模型绑定器正确映射,并且不会为空集合

假设
occumentdto
具有
Id
Name
属性(即set表公共属性),这应该可以工作

$.ajax({
    type: "POST",
    url: url,
    data: { occupants: occupants },
}).done(function (data) {
    $("#summaryContent").html(data);
}).fail(function (XMLHttpRequest, textStatus, errorThrown) {
    console.log("Status: " + textStatus);
    console.log("Error: " + errorThrown);
});
var occupants = [{ name: "Scott",id:4},{ name: "Shyju",id:6}];
$.ajax({
    type: "POST",
    url: '@Url.Action("Verification")',
    data: { occupants: occupants }
})

从jQuery 3.0开始,将删除
success()
error()
complete()
回调。您可以使用
done()
fail()
always()

哪一行代码出现错误?console.log(“错误:+errorshown”);在下面的javascriptAnswer中,Shyju告诉您为什么会出现错误,以及如何删除错误。现在要理解为什么删除数据类型时会得到空列表,您可以共享在JavaScript中填充变量的代码吗?您可以尝试对变量执行JSON.Stringify。哪一行代码给出了错误?console.log(“错误:+errorshown”);在下面的javascriptAnswer中,Shyju告诉您为什么会出现错误,以及如何删除错误。现在要理解为什么删除数据类型时会得到空列表,您可以共享在JavaScript中填充变量的代码吗?您可以尝试对变量执行JSON.Stringify。