在MVC 4.5的一个视图中,我有一个jquery函数,它对我的一个控制器方法执行ajax发布。我的数据已按字母顺序排列' JSON。出于某种原因,我的控制器方法总是将我的字符串长度限制为5325个字符。一旦将字符串发送到控制器,应用程序就会抛出错误,因为JSON字符串没有正确结束。
这是我的jquery函数:
$(function () {
$button.click(function () {
var selected = JSON.stringify($table.bootstrapTable('getSelections'));
$.ajax({
type: 'POST',
url: '/Hub/downloadWorkspaces',
data: 'selectedSpaces=' + selected,
success: function () {
window.location = '/Hub/browserMultiDownload';
}
});
});
});
数据被发送到我的一个控制器方法,如下所示:
[HttpPost]
public void downloadWorkspaces(string selectedSpaces)
{
System.Diagnostics.Debug.WriteLine(selectedSpaces);
JArray select = JArray.Parse(selectedSpaces);
for (int i = 0; i < select.Count; i++)
{
string selectedTest = select[i]["Workspace ID"].ToString();
Hub.Models.Query.getAllFiles(selectedTest);
}
}
由于某种原因,selectedSpaces字符串始终被截断。我该怎么做才能解决这个问题?
...,"_Workspace ID_data":{"field":"Workspace ID"},"name":"CM.02.0002.MASPA_Conditional //No closing brace
答案 0 :(得分:1)
试试这个演示:
$(function () {
$button.click(function () {
var json = {};
json.id = '101';
json.name = 'Name test';
$.ajax({
type: 'POST',
url: '/Hub/downloadWorkspaces',
data: JSON.stringify(json),
success: function () {
window.location = '/Hub/browserMultiDownload';
}
});
});
});
在控制器中:
[HttpPost]
public void downloadWorkspaces(string id, string name)
{
// id = 101, name = Name test
}
答案 1 :(得分:0)
您拥有的数据很可能包含&
,用于分隔POST请求中的值:
data: "selectedSpaces=" + "{'a':'b&newKey'}",
请求本身看起来如下,newKey'}
被视为帖子中没有数据的另一个键:
selectedSpaces={'a':'b&newKey'}
修正:Url编码(即http://api.jquery.com/jQuery.param/)或作为对象发送:
data: {'selectedSpaces' : selected }
在jQuery.ajax - sending data中查看更多信息。