jquery - 将来自 ajax 的数据存储到 JSON 变量以供以后使用

标签 jquery ajax json asp.net-mvc-4

我写了这个 Controller :

[HttpGet]
    public JsonResult GetAllCustomer()
    {
        CustomerList customer_list = new CustomerList();
        customer_list.Fill();
        using (DataTable dt = customer_list.Data)
        {
            customer_list = null;
            return Json(Utilities.GetTableRows(dt), JsonRequestBehavior.AllowGet);
        }
    }

我编写了这个 Ajax JS 脚本(这将填充到 HTML 表中):

var tempTable;
$.ajax({
        type: 'GET',
        url: '@Url.Action("GetAllCustomer", "Customer")',
        success: function (data) {
            var table = document.getElementById("tblCustomer");
            $.each(data, function (index, item) {
                var row = table.insertRow(-1);

                var code = row.insertCell(0);
                var Name = row.insertCell(1);
                var CompanyName = row.insertCell(2);
                var PhoneNumer = row.insertCell(3);
                var Active = row.insertCell(4);

                code.innerHTML = item["code"];
                Name.innerHTML = item["customer_name"];
                CompanyName.innerHTML = item["company_name"];
                PhoneNumer.innerHTML = item["contact_number"];
                Active.innerHTML = item["is_active"];
            })
        },
        error: function (req, status, errorObj) {
            alert(errorObj.toString());
        }
    });

如何将 data 存储在 $.each(data, function (index, item) 中作为临时表或(将其存储在变量中作为 JSON)以后用吗?

我在 AJAX 调用上尝试过这个:

    success: function (data) {
                tempTable = data;
     }

但是tempTable等于undefined; 我打算为以后的用户使用 tempTable,例如当用户单击某个按钮时将其发送到 Controller 。

最佳答案

有多种存储临时数据的选项。

1. InMemory/在 $.each 之外的变量中:- 所以你会做这样的事情

var tempTable = [];
$.ajax(/*..*/).success(function(dataA){
  $.each(dataA, function(i, v){tempTable.push(v);})
});

在这种情况下,您将在 ajax 成功调用后填充 tempTable。因此,无论您在何处想要使用 tempTable,请确保在 ajax 调用完成后使用它。

2.在 Html 中:- 您可以使用 JSON.stringify(dataA) 创建返回对象的 json 并将其保存在隐藏元素中。或者只使用 $.data 函数来保存与 DOM 节点关联的返回数据。这样,每当您想要使用数据时,您都必须从 HTML DOM 中检索它。看看这里 https://api.jquery.com/jquery.data/

3.在 Cookie 中:- 将数据保存在 Cookie 中将使您即使在关闭并重新打开浏览器窗口后也可以使用这些数据。您必须在应用程序的生命周期内管理数据的过期及其结构的任何变化,并且还必须对用户可能删除 cookie 的情况进行编码。将数据保存在 cookie 中很容易,看看这里 https://github.com/carhartl/jquery-cookie

4.本地存储:- 一种相对较新的 HTML5 技术。其中可以将数据保存在浏览器的本地存储中,关于管理状态的一切cookie也适用于管理本地存储的状态。看看这里 http://www.jstorage.info/

关于jquery - 将来自 ajax 的数据存储到 JSON 变量以供以后使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31283136/

相关文章:

java - 如何修复 com.google.gson.stream.MalformedJsonException

javascript - Jquery remove() 动态创建的元素

javascript - 在 ajax 响应元素上触发 JQuery 事件

javascript - 使用单选按钮触发链接

javascript - 无法格式化 json 数据以在自动完成中使用它

Java - 解析 JSON 有效负载,省略数组中损坏的对象

javascript - 如何使用 JavaScript 或 jQuery 启用按钮

mysql - Ajax下拉数据库

php - ajax收到的链接无法点击

javascript - Angular 1 : populate table with ng-repeat using a 2-d array from server's json