1

我正在使用 Jquery Tagit。

它提供了一个选项“AvailableTags”,它接受一个项目数组来填充自动完成。

当我将接收到的数组传递给 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”,但它似乎不想继续。

谢谢您的帮助。

4

2 回答 2

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
        });
    }
})
于 2012-09-22T23:39:03.173 回答
1

我的函数在一个外部 JS 文件中。通过将代码移回到同一个文件中,我能够做一个简单的 php 包含来获得我想要的东西。

$('#singleFieldTags').tagit({ 
availableTags: <? include("file_that_outputs_what_I_want.php") ?>,  
singleField: true, 
singleFieldNode: $('#mySingleField'), 
allowSpaces: true 
}); 
于 2012-09-23T00:14:55.540 回答