在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
发布于 2015-10-22 08:39:59
您拥有的最有可能的数据包括用于在POST请求中分隔值的&
:
data: "selectedSpaces=" + "{'a':'b&newKey'}",
请求本身将类似于折叠,newKey'}
被视为帖子中的另一个键,没有任何数据:
selectedSpaces={'a':'b&newKey'}
Fix: Url编码(即http://api.jquery.com/jQuery.param/)或发送为对象:
data: {'selectedSpaces' : selected }
请参阅jQuery.ajax -发送数据中的更多信息。
发布于 2015-10-22 08:33:40
试着使用这个演示:
$(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
}
https://stackoverflow.com/questions/33285110
复制