2010-01-27 99 views
1

我試圖在使用jQuery和自動完成插件的照片網站上實現實時搜索。當我在本地指定數據時,一切正常:通過AJAX將多維JSON數組傳遞給jQuery自動完成的幫助

var data = [ {text:'Link A', url:'/page1'}, {text:'Link B', url: '/page2'} ]; 

但是,當我將它移動到PHP時,jQuery無法正確解析結果。我真的不確定這裏發生了什麼事。我當前的代碼如下:

<script> 
$(document).ready(function(){ 
var data = '/livesearch'; 
$("#aut_field").autocomplete(data, { 
    formatItem: function(item) { 
    return item.text; 
    } 
}).result(function(event, item) { 
    location.href = item.url; 
}); 
       }); 
</script> 

而且我的PHP腳本按以下格式打印多維數組:

{"1":{"text":"Google Website","url":"http:\/\/www.google.com"}, 
"2":{"text":"Yahoo Website","url":"http:\/\/yahoo.com"},} 

但是當我做警報(item.text)變量未定義說。

如果我確實警告(item),我會看到PHP輸出的整個字符串。

我試着玩弄eval(),但我不知道把它放在哪裏或如何讓JS實際解釋數據。謝謝你的幫助。示例代碼特定於我的實現感謝。

+1

什麼是在第一代碼片段{ldelim}和{} rdelim? – 2010-01-27 07:12:25

+0

對不起 - 應該閱讀{和} ......它是從Smarty複製粘貼的。固定。 – ensnare 2010-01-27 07:22:34

回答

1

問題出在php代碼上。

你的工作是模仿工作JavaScript數組的strcuture。見PHP的json_encode()

1

嘗試在你的PHP這種模式:

[ 
    {"text":"Google Website","url":"http:\/\/www.google.com"}, 
    {"text":"Yahoo Website","url":"http:\/\/yahoo.com"} 
] 
+0

工作。謝謝。 – ensnare 2010-01-27 18:59:59

+0

然後你應該通過點擊空白檢查來接受這個答案。 – SLaks 2010-01-28 02:00:26

0

而且你的PHP腳本返回一個多維數組/ 對象組合。 如果你堅持(你吹你的變種有幾個 「文本:」 AMD 「URL;」)它shou1ld是:

[[{"text":"Google Website","url":"http:\/\/www.google.com"}],[{"text":"Yahoo Website","url":"http:\/\/yahoo.com"}]] 

更好:

var x=[["Google Website","http:\/\/www.google.com"],["Yahoo Website","http:\/\/yahoo.com"]]; 

如果你要跳轉到雅虎網站:var url = x [1] [1];

或者:

var x={"Google_Website":"http:\/\/www.google.com","Yahoo_Website":"http:\/\/yahoo.com"}; 

如果你想跳到Google_Website:VAR URL =×〔 「Google_Website」];

我的技巧:登陸enter link description here