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



我在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()的开始

相关内容

  • 没有找到相关文章