我在jquery中有一个ajax调用,它返回4个不同的数组。 我希望在ajax成功函数之外使用其中3个数组,并且对于某些点击事件,数组中的数据应该是可访问的。
我只是不知道处理数组变量的最佳方法。 有些人说走向全球是一个坏主意,而其他人则说好了..所以
ajax成功功能: 用其中一个数组做什么
array1,array2需要被其他函数使用并单击事件
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调用来获取每个不同函数所需的数据?
答案 0 :(得分:0)
将数组分配给ajax成功函数中的window对象:
function ajaxSuccess(response){
window.array1 = response.array1;
window.array2 = response.array2;
...
}
答案 1 :(得分:0)
如果需要在成功函数之外使用它,则在函数外部设置一个变量。
var myarray1= new Array();
$.ajax(function() {....
success(function(data) {
myarray1 = data.array
如果您需要一个超出函数范围的变量,请不要担心“走向全局”,然后将其设置在您需要的位置。一个好地方可能在$(document).ready()
答案 2 :(得分:0)
您绝对不希望变量位于全局范围内,但您可以将所有内容包装在函数中以防止它们位于全局范围内:
$(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。