Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从jQuery AJAX调用返回Javascript变量,覆盖以前的Javascript/JSON对象_Javascript_Jquery_Json - Fatal编程技术网

从jQuery AJAX调用返回Javascript变量,覆盖以前的Javascript/JSON对象

从jQuery AJAX调用返回Javascript变量,覆盖以前的Javascript/JSON对象,javascript,jquery,json,Javascript,Jquery,Json,谢谢你的阅读。我有一个难题,我似乎可以解决。我创建了一个jQuery插件,它基于JSON对象创建表行。在这个插件中,我希望有一个带有AJAX调用的分页,它将生成一个新的JSON对象,该对象具有相同的变量名和不同的键/值对(我想覆盖它)。成功后,我可以向数据发出警报,但无法访问我发出警报的数据中的变量 var grid = { "name": "test", "columns": [ {"name":"col1"}, {"name":"c

谢谢你的阅读。我有一个难题,我似乎可以解决。我创建了一个jQuery插件,它基于JSON对象创建表行。在这个插件中,我希望有一个带有AJAX调用的分页,它将生成一个新的JSON对象,该对象具有相同的变量名和不同的键/值对(我想覆盖它)。成功后,我可以向数据发出警报,但无法访问我发出警报的数据中的变量

var grid = { 
    "name": "test", 
    "columns":
    [
        {"name":"col1"},
        {"name":"col2"}
    ], 
    "rows":
    [
         {"name":"col1", "value":"text1"},
         {"name":"col2", "value":"text2"}
    ] 
}
$("#myDiv").makeTable(); <-- plugin that creates table based off this JSON
// if I alert grid.columns[0].name I get col1 no problem.
var-grid={
“名称”:“测试”,
“栏目”:
[
{“name”:“col1”},
{“name”:“col2”}
], 
“行”:
[
{“name”:“col1”,“value”:“text1”},
{“name”:“col2”,“value”:“text2”}
] 
}

$(“#myDiv”).makeTable() 您不应该让插件访问用户未传入的任何外部内容。如果你想让你的“插件”接受一个对象,那么你应该传递一个对插件的引用

$("#myDiv").makeTable({data:grid});
对于分页,可以采用两种方法之一。简单的答案是在每次分页调用时重新运行插件

$.ajax({
success: function(data) {    
    var grid //construct new object from data 
    $("#myDiv").makeTable({data:grid});
}
});

或者你可以让你的插件接受一个“数据源”。根据您所说的ajax源代码的含义,这可能是琐碎的(一次获取所有数据),也可能是棘手的(更改您的请求以一次只获取每个“页面”的数据)。

如果您想在代码中留下注释,您可以使用实际注释
/
,这样我们就可以看到您真正运行的是什么。如果该代码实际运行(正如您在第一个警报中所说的),并且您接下来声明了一个名为
grid
的变量,那么您的下一个警报将工作。但是,我怀疑您实际上是在尝试访问
数据的属性,它是一个字符串,而不是一个对象,因为您指定了
数据类型:“script”
。谢谢您的输入。我有几个理由来解释为什么我要做我正在做的事情。这是一个本地应用程序,不是公共应用程序。我试过你的想法,但根本没用。有人知道重写全局JSON对象的更好方法吗?哦,多亏了那些认为我没有为此投入足够的研究精力的人。。。Booooo…我想如果你想在这方面得到任何帮助,你必须发布一些更完整的代码。在没有实际代码的情况下,我们所能提供的只是风格上的建议,我认为您在实现这些建议时会遇到挑战。
$.ajax({
success: function(data) {    
    var grid //construct new object from data 
    $("#myDiv").makeTable({data:grid});
}
});