Ajax调用填充数组变量

时间:2012-09-22 23:37:39

标签: jquery jquery-ui jquery-autocomplete tag-it

我正在使用Jquery Tagit。

它提供了一个选项“AvailableTags”,它接受一组项目来填充AutoComplete。

当我将接收到的数组传递给Tagit调用时,我的ajax get调用似乎不起作用,即使它似乎正在生成我需要的相应数据(填充数组)。

AJAX

$.ajax({
type: 'get',
url: 'gettags.php',
data: "",
dataType: 'json',
success: function(data) {
sampleTags = data;
}
})

$('#singleFieldTags').tagit({
availableTags: sampleTags,
singleField: true,
singleFieldNode: $('#mySingleField'),
allowSpaces: true
});

PHP

$sql = "SELECT tag FROM tags"; 
$result = mysql_query($sql);

$data = array[];

while ($row = mysql_fetch_row($result)) {
$data[] = $row;
}

echo json_encode($data);

我只是试图通过变量sampleTags将返回的数组传递给Tagit的“availableTags”,但它似乎不想继续使用。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

$.ajax()是异步执行的,因此您需要在success回调中处理数据:

$.ajax({
    type: 'get',
    url: 'gettags.php',
    data: "",
    dataType: 'json',
    success: function(data) {
        var sampleTags = data;
        $('#singleFieldTags').tagit({
            availableTags: sampleTags,
            singleField: true,
            singleFieldNode: $('#mySingleField'),
            allowSpaces: true
        });
    }
})

答案 1 :(得分:1)

我的功能是在外部JS文件中。通过将代码移回到同一个文件中,我能够做一个简单的PHP包括得到我想要的东西。

$('#singleFieldTags').tagit({ 
availableTags: <? include("file_that_outputs_what_I_want.php") ?>,  
singleField: true, 
singleFieldNode: $('#mySingleField'), 
allowSpaces: true 
});