【发布时间】:2016-06-14 22:11:09
【问题描述】:
我在 MVC 应用程序中工作,调用 JsonResult AJAXly 时出现 404 错误
我的要求:
http://localhost:60890/ED/Document/GetGroupDocumentMergedPath?groupDocuments=%5B%7B%22GroupDocumentId%22%3A1314%2C%22TemplateId%22%3A212%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A149%2C%22TemplateId%22%3A208%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A570%2C%22TemplateId%22%3A210%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A198%2C%22TemplateId%22%3A209%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A90%2C%22TemplateId%22%3A201%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A119%2C%22TemplateId%22%3A206%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A2431%2C%22TemplateId%22%3A217%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A1004%2C%22TemplateId%22%3A211%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A1686%2C%22TemplateId%22%3A213%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A2076%2C%22TemplateId%22%3A215%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A2469%2C%22TemplateId%22%3A302%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A5140%2C%22TemplateId%22%3A220%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A5020%2C%22TemplateId%22%3A221%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A5105%2C%22TemplateId%22%3A222%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A5066%2C%22TemplateId%22%3A223%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4039%2C%22TemplateId%22%3A225%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4159%2C%22TemplateId%22%3A235%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4283%2C%22TemplateId%22%3A245%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4343%2C%22TemplateId%22%3A249%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4399%2C%22TemplateId%22%3A250%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4463%2C%22TemplateId%22%3A252%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4856%2C%22TemplateId%22%3A256%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4906%2C%22TemplateId%22%3A257%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4956%2C%22TemplateId%22%3A258%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A2499%2C%22TemplateId%22%3A215%2C%22GroupDocumentType%22%3A0%7D%5D&actionType=715&_=1456902108180
控制器:
[HttpGet]
public JsonResult GetGroupDocumentMergedPath(string groupDocuments, int actionType){}
AJAX 调用:
$.ajax({
url: '/ED/Document/GetGroupDocumentMergedPath',
type: "GET",
data: { groupDocuments: JSON.stringify(groupDocuments), actionType: 715 },
beforeSend: function () {
},
success: function (data) {
//Business logic
},
complete: function () {
checkedIds = {};
ToggleDisabled("print", false);
}
});
场景:
在 AJAX 调用中,我发送的列表平均包含 20 个具有三个属性的对象。
我的查询字符串长度超过允许的长度导致错误或者我哪里出错了?
【问题讨论】:
-
如果你只使用(比如)
data: { groupDocuments: 'abc', actionType: 715 },,它是否有效? -
@StephenMuecke 如果负载较小,它工作正常,我在这里尝试下载一组文档,当我为单个文档(列表中只有一个对象)下载时,它工作正常跨度>
-
因为它是一个 GET,你可能超出了查询字符串的限制。尝试将其设置为 POST 但是为什么将其作为字符串发布 - 您应该发布对象并且参数应该是(比如)
List<yourModel> documents -
@RandomUser 发送数据时,GET方法将数据添加到URL中;并且 URL 的长度是有限的(最大 URL 长度为
2048 characters)。 -
您需要对 ajax 进行一些更改 - 添加
contentType: "application/json; charset=utf-8",并更改data JSON.stringfy({ groupDocuments: groupDocuments, actionType: 715 }),假设groupDocuments是您的对象数组。
标签: jquery ajax asp.net-mvc asp.net-mvc-4 http-status-code-404