我正在使用jquery-autocomplete插件從建議/自動完成中查找數組。PHP json_encode不與1維數組一起工作
REF:https://github.com/devbridge/jQuery-Autocomplete
PHP(1)
$stmt = $dbh->query("SELECT tag_name FROM tags");
$tags = array();
$tags = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);
echo json_encode($tags);
/*
var_dump($tags);
"array(6) {
[0]=>
string(1) "tag1"
[1]=>
string(2) "tag2"
[2]=>
string(3) "tag3"
[3]=>
string(4) "tag4"
}
"
*/
PHP(2)
echo ('["tag1","tag2","tag3","tag4"]');
PHP(3)
$a = ["tag1","tag2","tag3","tag4"];
echo json_encode($a);
的JavaScript
$.ajaxSetup({ cache: false, async: false });
var myTags = [];
$.get('/action.php', {action: 'get_tags'}).done(function(data){
console.log(data);
myTags = eval(data);
//myTags = JSON.parse(data);
});
$('#tagInput').autocomplete({
lookup: myTags
});
PHP v1和PHP v2都會提供一個合適的數組console.log(data)
。 但是,來自PHP v1 json_encode($tags)
的數組無法與插件一起工作(它只是無法識別數組)。而PHP v2數組echo ('["tag1","tag2","tag3","tag4"]');
工作得很好。 PHP v3也不起作用。
這段代碼有什麼問題?爲什麼json_encode()
數組未被識別?
你是什麼意思'PHP v1'和'PHP v2'? – Ranjith 2015-03-02 16:22:30
由於您在接收到Ajax響應之前調用'$('#tagInput')。autocomplete({...})'**,所有這些解決方案都無法正常工作。請參閱[爲什麼我的變量在函數內部修改後沒有改變? - 異步代碼引用(http://stackoverflow.com/q/23667086/218196) – 2015-03-02 16:22:39
@Ranjith我的意思是,這兩個代碼proudce相同的輸出數組,但V2作品和V1不 – Azevedo 2015-03-02 16:27:00