javascript - 将大型 JavaScript 数组发送到 Web API

标签 javascript jquery ajax asp.net-web-api xmlhttprequest

我为这个问题苦苦挣扎了两天......

我有一个 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/

相关文章:

javascript - ajax调用后滚动到某个元素

javascript - 如何在页面加载时隐藏另一个 php 文件中的 div

jquery - 显示 Facebook、Instagram 和其他社交网站等更新

javascript - 使用来自 PHP 的查询填充 HTML 元素

jquery - PhoneGap + jQuery Mobile + cakePHP

jquery - 类似 Facebook 的顶部导航 CSS 和 jQuery

javascript - jQuery 隐藏和显示不正确(多次)

javascript - 如何在 Angularjs 中点击 div 标签时使用 ui-sref?

javascript - 使用 Angular HttpClient 在 DELETE 请求完成后执行某些操作

javascript - 从 SSE 名称不是 "data:"的服务器检索数据