jQuery ajax问题 - 无法使我的功能工作

时间:2012-06-03 13:14:20

标签: jquery ajax

我正在尝试为jquery自定义一个自动完成插件。这应该非常简单。

应该从autocomplete.php中提取名称列表,然后发送到“lookup”。当我手动输入它时,它工作,但当我尝试使用函数getnames()获取名称时,它不起作用。我正确地返回数据了吗? php文件也可以。

var options, a;

function getnames() {
    $.ajax({
        type:'POST',
        dataType:'json',
        data:{ },
        url:'autocomplete.php',
        timeout:1000,
        success:function (data) {
            return data;
        }
    });
}

// Doesn't work:

// DOC READY
$("#members").one("click", function () {
    options = { 
        lookup:getnames() 
    };
    a = $('#members').autocomplete(options);
});

// Works:

// DOC READY
$("#members").one("click", function () {
    options = { 
        lookup:["name1","name2"]
    };
    a = $('#members').autocomplete(options);
});

autocomplete.php

<?
header("Content-Type: application/json", true);
$info = array("name1","name2");
echo json_encode($info);
?>

2 个答案:

答案 0 :(得分:1)

您先获取名称并等待ajax响应。当它到达时,你必须开始自动完成。

E.g。 (另):

function getnames() {
    $.ajax({
        type:'POST',
        dataType:'json',
        data:{ },
        url:'autocomplete.php',
        timeout:1000,
        success:function (data) {
            options = { 
                lookup:data
            };
            a = $('#members').autocomplete(options);
        }
    });
}

$("#members").one("click", function () {
    getnames();
}

答案 1 :(得分:-1)

试试这个:

 function getnames() {
        var myData;
        $.ajax({
            type:'POST',
            dataType:'json',
            data:{ },
            url:'autocomplete.php',
            timeout:1000,
            success:function (data) {
              myData = data;
            }
        });
        return myData;
    }