1

我对 jquery 很陌生,遇到了一个小故障。基本上,我有一个非常基本的查询脚本,它访问 php 文件以返回日历上日期检查器的数组。

我在那里有警报,它告诉我数组正在正确发送,但我无法让 availableDates 变量对其进行操作。

这是jquery脚本

$.get("sql.php",function(data,status)

{
/* alert("Data: " + data + "\nStatus: " + status); */
result = data;
return result;
});

var unavailableDates = result; /*result is an array. In this format it works, var unavailableDates = ["1-1-2013"]; */

这是它正在访问的基本 php 脚本:

<?

$row[0] = "01-01-2013";
$row[1] = "02-01-2013";
$row[2] = "03-01-2013";

echo $row;

?>
4

3 回答 3

3

AJAX 是异步的。

这意味着您不能从使用$.get()or$.post()等​​的函数返回任何内容。相反,请执行以下操作:

$.get("sql.php",function(data,status)
{
    /* alert("Data: " + data + "\nStatus: " + status); */
    result = data;
    var unavailableDates = result;
});

并在功能$.ajaxComplete上,给工作使用unavailableDates

于 2012-12-30T05:08:12.277 回答
2

$.get是异步的。代码行:

var unavailableDates = result;

将在get完成之前执行并运行回调。

于 2012-12-30T05:07:51.060 回答
2

其他人已经注意到您的 JS 中的异步问题,但 php 的输出也需要是 JSON,以便将数组从服务器发送到客户端。

echo json_encode( $row);

添加dataType参数,$.get以便 jQuery 知道将数据解析为 JSON。

$.get("sql.php",function(data,status){
    /* consume array here since AJAX is asychronous*/
     $.each(data, function(i, item){
          doSomething( item);
     })
},'json');

编辑:也可以使用已经$.getJSON()包含数据类型的快捷方法json

于 2012-12-30T05:30:25.270 回答