我为这个问题苦苦挣扎了两天......
我有一个 JavaScript 数组(20,000K 行和 41 列)。它最初是通过 ajax 调用在 javaScript 中接收的,如下所示,
var dataArray = [];
var dataRequest = {};
dataRequest.SearchCondition = 'some value';
$.ajax({
type: "POST",
url: "api/GetData/ProcessRequest",
dataType: 'json',
cache: false,
async: true,
crossDomain: false,
data: dataRequest ,
success: function (response) {
dataArray = response;
},
error: function (xhr, textStatus, errorThrown) {
dataArray = null;
}
});
在应用程序中,用户将验证数据并将其发送回 Web API 方法。
我试图将相同的数据(dataArray)发送回 Web api 方法,但是失败了。请参阅下面的代码,
选项 1:(失败 - 请求未命中 Web api 方法)
var dataArrayJsonStr = JSON.stringify(dataArray);
$.ajax({
type: "POST",
url: "api/SendData/ProcessRequest",
dataType: 'json',
data: {'dataValue':dataArrayJsonStr },
success: function (response) {
alert('success');
},
error: function (xhr, textStatus, errorThrown) {
alert(errorThrown)
}
});
在 IE 8 中,我收到“内存不足”异常弹出窗口。 (我们的大多数应用程序用户仍然使用 IE 8)
在 Chrome 中,它会崩溃。
尝试了选项2:(不知道如何读取该值)
我尝试通过 XmllHttpRequest 向 Web api 发送相同的值
var dataArrayJsonStr = JSON.stringify(dataArr);
var xmlRequest;
if (window.XMLHttpRequest) {
xmlRequest = new XMLHttpRequest();
}
xmlRequest.open("POST", "api/SendData/ProcessRequest", false);
xmlRequest.setRequestHeader('Content-Type', 'application/text');
xmlRequest.send("dataValue=" + dataArrayJsonStr);
使用 Chrome,我能够将数据成功发布到 Web API,我看到内容长度为“128180309”。但是,我没有看到值(value)观。如何获取 Web API 中的值?
请建议我如何从 javascript 将大数据发送回 Web api。
谢谢, Vim
最佳答案
我认为你创造了开销,也许我错了,你可以编辑我。 您真的需要发回所有数据还是只需要发送修改后的数据? 因为在现实生活中很难想象用户会查看 20,000 行。
很好的例子是ExtJS商店,你可以看到例子here 存储的关键在于它们只向服务器发送修改或删除的数据,这样可以节省浏览器、网络和服务器资源。
关于javascript - 将大型 JavaScript 数组发送到 Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28351606/