2012-06-03 58 views
1

我试图为jquery自定义一个自动完成插件。这应该非常简单。jQuery ajax问题 - 无法让我的功能工作

它应该从autocomplete.php中提取名称列表,然后发送到“查找”。它在我手动输入时起作用,但是当我尝试使用函数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); 
?> 

回答

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(); 
} 
+0

谢谢,那很好。 – domino

-1

试试这个:

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

难道这只是返回'undefined'? – Oleg