2012-06-03 81 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