1

我正在尝试使用 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"},}

但是,当我执行 alert(item.text) 时,变量显示未定义。

如果我执行 alert(item) 我会看到 PHP 输出的整个字符串。

我尝试使用 eval() 但我不确定将它放在哪里或如何让 JS 实际解释数据。谢谢你的帮助。感谢特定于我的实现的示例代码。

4

3 回答 3

1

问题在于php代码。

你的工作是模仿工作 javascript 数组的结构。见 php 的 json_encode()

于 2010-01-27T07:52:54.943 回答
1

在你的 php 中尝试这种模式:

[
   {"text":"Google Website","url":"http:\/\/www.google.com"},
   {"text":"Yahoo Website","url":"http:\/\/yahoo.com"}
]
于 2010-01-27T08:00:01.807 回答
0

并且您的 PHP 脚本返回一个多维数组/对象组合。如果你坚持(你用几个“text:”和“url;”炸毁你的var)它应该是:

[[{"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=x["Google_Website"];

我的提示:访问在此处输入链接描述

于 2013-04-16T08:26:27.770 回答