ajax成功函数后,数组为空

时间:2014-09-25 07:18:45

标签: javascript php jquery arrays ajax

我是一名新手程序员,所以请原谅我的浅薄知识。

我正在尝试向服务器发送ajax请求并使用数组显示它。但是,当我在外面使用我的数组时,它显示的数据是未定义的。我想知道是什么原因以及如何纠正我的代码。提前谢谢。

以下是我的JavaScript,PHP和HTML代码。

的JavaScript

var name = [];
$(window).load(function(){
     $.ajax({
         url: '../../PHP/admin/retrieve_elderly.php',
         data: 'area_name=' + area_name,
         type: 'POST',
         dataType: 'json',
         success: function(data){
              for(var i = 0; i < data.length; i++){
                  name.push(data[i]);
             }
         }
     });    
     $('#feedback').text('Hello ' + name[0]);
}

PHP

$area_name = $_POST['area_name'];

$name = array();

$sql_elderly = "SELECT * FROM elderly ORDER by name";
$query_elderly = mysql_query($sql_elderly);
while($rows = mysql_fetch_array($query_elderly)){
    $name[] = $rows['name'];
}

echo json_encode($name);

HTML

<?php 
include "../../PHP/connection.php";

if(isset($_GET['area_name'])){
    $area_name = $_GET['area_name'];

    $sql = "SELECT * FROM floorplan WHERE zone_name = '$area_name'";
    $query = mysql_query($sql);
?>
<!DOCTYPE HTML>
<html>
<head></head>
<body>
    <div id = "feedback"></div>
    <script type = "text/javascript" src = "../../JavaScript/jquery.js"></script>
    <script type = "text/javascript" src = "../../JavaScript/setwifi.js"></script>
</body>
</html>

输出:

Hello undefined

2 个答案:

答案 0 :(得分:1)

用作

var name = [];
$(window).load(function(){
     $.ajax({
         url: '../../PHP/admin/retrieve_elderly.php',
         data: 'area_name=' + area_name,
         type: 'POST',
         dataType: 'json',
         success: function(data){
              for(var i = 0; i < data.length; i++){
                  name.push(data[i]);
             }
             $('#feedback').text('Hello ' + name[0]);
         }
     });    

}

答案 1 :(得分:1)

这是因为ajax请求运行异步。

您的$('#feedback').text('Hello ' + name[0]); 在ajax调用完成之前执行你应该使用jquerys .promise().done(function(){ Promise