将aj中的DATA存储到JSON变量以供以后使用

时间:2015-07-08 03:42:23

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

我写了这个控制器:

[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作为TEMPORARY表存储在$.each(data, function (index, item)中,或者(将其作为JSON存储在变量中)供以后使用?

我在AJAX调用上试过这个:

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

tempTable等于未定义; 我会为以后的用户使用tempTable,例如当用户点击某个按钮时将其发送到控制器。

2 个答案:

答案 0 :(得分:3)

存储临时数据有多种选择。

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。在Cookies中: - 即使在浏览器窗口关闭并重新打开后,您也可以使用Cookie保存数据。您必须在应用程序的生命周期内管理数据的过期和结构的任何更改,并且还必须对用户可能已删除cookie的过程进行编码。将数据保存在cookie中很容易看看https://github.com/carhartl/jquery-cookie

4。本地存储: - 相对较新的HTML5技术。您可以在其中将数据保存在浏览器的本地存储中,并且有关管理状态的所有内容都适用于管理本地存储的状态。看看http://www.jstorage.info/

答案 1 :(得分:1)

我不知道您存储数据以供日后使用的目的是什么。但是,如果我是正确的并且理解了您的问题,那么您希望将检索到的JSON数据存储在变量中,然后,您希望通过循环使用它。如果这是你想要的,我建议下面的解决方案对你有用:

   var tempTable = [];

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

它的作用是将您的响应存储在一个数组类型的变量中。现在你可以循环这个array并可以做你想做的任何事情(任何意味着你只能执行array支持的操作。)

希望这有帮助。如果您发现任何问题,请告诉我。