在整个代码中使用AJAX结果变量

时间:2013-12-17 23:36:02

标签: javascript jquery ajax youtube-api

我正在使用jQuery AJAX从PHP文件中获取数据,该文件从MySQL数据库获取数据。我现在正试图在我的ajax调用之外使用该数组。具体来说,我正在为YT.Player加载多个视频ID,但我很难将我的数组转换为另一个函数。

这是我的测试代码:

    <!DOCTYPE html>
    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
    </script>
    <script>
    var data = new Array();
    $(document).ready( function() {
      $.ajax({
      type: 'POST',
  url: 'test.php',
  data: 'id=testdata',
  dataType: 'json',
  cache: false,
  success: function(result) {
    data = result;
    $('#div1').html(result[4]);
  },
  });
});
$("button").click(function(){
  alert(data[4]);
});
</script>
</head>
<body>


<button id="button">Test</button>
<div id="div1"><h2>div1</h2></div>
</body>
</html>

在页面按预期加载后,div会更改半秒。用于测试的单击函数不起作用,并且它不能用于我正在处理的实际函数中:

function onPlayerStateChange(event) {        
    if(event.data === 0) { 
        ++i;
        player.loadVideoById(data[i]);
    }
}

这是我的第一个使用jQuery和JS的项目,所以我希望我错过了一些简单的

1 个答案:

答案 0 :(得分:0)

你应该把

$("button").click(function(){
  alert(data[4]);
});

$(document).ready( function() {

});

此外,如果您将 var 放在变量之前,那么它将变为局部变量。

因此,您应该在

之前删除 var
data = new Array();

或仅作为附加参数

function onPlayerStateChange(event, data) {        
    if(event.data === 0) { 
        ++i;
        player.loadVideoById(data[i]);
    }
}

但是你还需要在

中调用它
$(document).ready(function() {} ); 

范围。