使用xml作为jquery自动完成中的源代码
问题描述:
我正在尝试使用jquery自动完成进行文本输入。我想要的是当用户键入一个字母时,从指定的字母开始的结果将显示在xml源文件中。但我无法让它工作。由于我在jQuery中很新,所以我不知道自己做错了什么。请帮助:)使用xml作为jquery自动完成中的源代码
而且我测试的PHP文件,它工作正常为XML
下面的代码
$("#names").autocomplete({
source: function(request , response){
$.ajax({
type: 'GET',
url: 'name.php',
dataType: "xml",
data: "letter="+request,
success: function(data) {
var xml;
if (typeof data == "string") {
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false;
xml.loadXML(data);
} else {
xml = data;
}
var array = [];
var i = 0;
$(xml).find('nameslist').each(function(){
array[i] = $(this).find("name").text();
i++;
});
}
});
response(array);
},
minLength: 1
});
答
这里是我发现上面的代码
解决方案in .js
$("#names").autocomplete({
source: function(request , response){
$.ajax({
type: 'GET',
url: 'names.php',
data: "letter="+$("#names").val(), //request doesn't work here, I don't know why
success: function(data) {
var explode = data.split("|");
response(explode);
}
});
}
});
在PHP文件
if(isset($_GET['letter'])){
$letter = $_GET['letter'];
$sql = "select name from name_list where name like '".$letter."%'";
$query = mysql_query($sql);
while($result = mysql_fetch_row($query)){
echo $result[0].'|';
}
}
答
我是新的JQuery的自己,但它不应该是typeof(data)==“string”?
答
为什么要抓取xml文件中的一封信?为什么不使用.html将字母附加到下面的div。如果你做一个自动完成id有一个mysql数据库,它将保存一个项目列表的自动完成和文本框每个keyup检查如果文本框内有一个字符串,如果它做了一个Ajax请求与jQuery的PHP文件,然后你去除在$获得搜索内容,那么你可以把它的PHP文件抓取结果像这样的字符串内,并在底部的JavaScript字符串连接到您的div wwith HTML
答
所以使用JSON :)
$("#names").autocomplete({ source: function(request , response){ $.ajax({ type: 'GET', url: 'name.php', dataType: "json",
去 在你的'name.php'以下做
<?php // do all your code here, get names etc.... // lets say your array with names looks like this // $names = array('Peter', 'John', 'Tom', 'Andy'); // serialize the array and send it to the browser echo json_encode($names); // edited here ?>
在你的.js文件...
var names = jQuery.parseJSON('["Peter","John","Tom","Andy"]'); // just to try, if this works, uncoment alert() below this //alert(names[3]);
所以我完整的代码会是这样
$("#names").autocomplete({ source: function(request , response){ $.ajax({ type: 'GET', url: 'name.php', dataType: "json", data: "letter="+request, success: function(data) { var names = jQuery.parseJSON(data); } }); response(names); }, minLength: 1 });
一般AJAX功能工作正常,我用同样的语法几个功能,并没有使问题 – 2011-01-06 16:14:36
你确切地知道它失败了呢?你是否放弃了ALERT语句来遍历代码? – Robert 2011-01-06 16:18:41
它说'数组'是undefined – 2011-01-06 17:46:47