C# 从控制器返回PartialView时发生JSON.parse错误
我有以下ajax调用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({
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。