Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqueryajax问题-can';我不能让我的功能发挥作用_Jquery_Ajax - Fatal编程技术网

jqueryajax问题-can';我不能让我的功能发挥作用

jqueryajax问题-can';我不能让我的功能发挥作用,jquery,ajax,Jquery,Ajax,我正在尝试为jquery定制一个自动完成插件。这应该非常简单 它应该从autocomplete.php中提取名称列表,然后发送到“lookup”。当我手动键入它时,它可以工作,但当我尝试使用函数getnames()获取名称时,它不工作。我返回的数据正确吗?php文件也可以工作 var options, a; function getnames() { $.ajax({ type:'POST', dataType:'json', data:

我正在尝试为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);
?>

试试这个:

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

您必须先获得名称,然后等待ajax响应。当它到达时,您必须启动自动完成

例如(未经测试):


这不就是返回未定义的
吗?
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();
}