函数中的jquery变量,如何处理全局变量?

时间:2012-01-25 23:31:33

标签: jquery global-variables

我在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调用来获取每个不同函数所需的数据?

3 个答案:

答案 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。