我写了这个控制器:
[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
,例如当用户点击某个按钮时将其发送到控制器。
答案 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
支持的操作。)
希望这有帮助。如果您发现任何问题,请告诉我。