我收到了这段代码:
function datatable_display(json) {
var order = "desc";
var len = $('.div_gui_tabledata').length;
len = len++;
var table = $('#dynamic_' + len);
document.write("<div class='div_gui_tabledata' id='dynamic_" + len + "' >");
this.array = JSON.stringify(json);
$.ajax({
type: "POST",
url: "../../api.php?p=datatable_sort",
data: "sortby=2&data=" + array,
dataType: "html",
success: function (data) {
$('#dynamic_' + len).html(data);
}
});
document.write("</div>");
$('#dynamic_' + len + ' .sortable').live("click", function () {
var index = $(this).index();
$.ajax({
type: "POST",
url: "../../api.php?p=datatable_sort",
data: "order=" + order + "&sortby=" + index + "&data=" + array,
dataType: "html",
success: function (data) {
$('#dynamic_' + len).html(data);
if (order == "desc")
order = "asc";
else
order = "desc";
}
});
});
}
我从我的PHP脚本中调用此函数:
$json = json_encode($this->arr);
return "<script>datatable_display($json);</script></div>";
当我调用该函数两次甚至更多次时,问题是json-Object数组总是被最后一次覆盖。
Javascript中有类似OOP的东西吗?或者威胁每个函数的东西都是唯一的?我为div和Sort-Links生成唯一的id,但是只使用了最新的JSON对象。
答案 0 :(得分:0)
你可以采取不同的建筑方式,让自己的生活更轻松,但你可能会自己发现这些。要回答您的直接问题,使用javascript的内置对象可以解决您的问题。
var str = "something"; // choose your own key
this.store = {}
this.store[str] = JSON.stringify(json);
或
this.array = []; // in your initializer or constructor
this.array.push(JSON.stringify(json)); // this will add to the array as you go
通过这种方式,您可以保留json的历史记录而不会覆盖之前的内容。