我在jquery中有一个ajax调用,它返回4个不同的数组。我想在 ajax 成功函数之外使用其中的 3 个数组,并且数组中的数据应该可以访问某些点击事件。
我只是不知道处理数组变量的最佳方法。有些人说走向全球是个坏主意,另一些人则说没关系。所以
阿贾克斯成功函数:对其中一个数组做事
array1,array2 需要由其他函数和 click 事件使用
function display_results_1(){
$('#myDiv').html(array1.id);
}
$('#binfo').click(function(){
$('#client_info_div').dialog({
$('#myDiv').html(array2.id);
});
})
这是我的 ajax 调用:
$('#c_search').submit(function(){
data = ($(this).serialize());
$.ajax({
url: 'actions/get_company.php',
type: 'POST',
data: data,
cache: false,
dataType: 'json',
success: function(selected){
`doing stuff here`
})
})
我是否应该在每个不同函数需要时使用单独的 Ajax 调用来获取数据?
你绝对不希望你的变量在全局范围内,但你可以将所有内容包装在一个函数中,以防止它们在全局范围内:
$(function() {
var array1 = [];
var array2 = [];
function display_results_1(){
$('#myDiv').html(array1.id);
}
$('#binfo').click(function(){
$('#client_info_div').dialog({
$('#myDiv').html(array2.id);
});
})
$('#c_search').submit(function(){
data = ($(this).serialize());
$.ajax({
url: 'actions/get_company.php',
type: 'POST',
data: data,
cache: false,
dataType: 'json',
success: function(selected){
`doing stuff here`
})
})
});
通过这样做,您将确保代码也在页面加载时运行,请注意 $(( 包装函数。
有关详细信息,请参阅 http://api.jquery.com/ready/。
与之前的答案相反,走向全球不是一个好主意。 你最终可能会使用相同的变量来拥有多个JavaScript片段。
数组分配给 ajax 成功函数中的窗口对象:
function ajaxSuccess(response){
window.array1 = response.array1;
window.array2 = response.array2;
...
}
如果您需要在成功函数外部使用它,请在函数外部设置一个变量。
var myarray1= new Array();
$.ajax(function() {....
success(function(data) {
myarray1 = data.array
不要担心"走向全球",如果你需要一个函数范围之外的变量,那么把它设置在你需要的地方。一个好地方可能在$(document).ready()
的开始