我正在使用AJAX
和jQuery
制作一个自动完成文本框。这是我的客户端AJAX代码。
$(document).ready(function(){
$('#tagtext').autocomplete({
source: function( request, response ) {
$.ajax({
url : 'ajax.php',
dataType: "json",
data: {
name_startsWith: request.term,
type: 'country'
},
success: function( data ) {
response( $.map( data, function( item ) {
return {
label: item,
value: item
}
}));
}
});
},
autoFocus: true,
minLength: 0
});
});
这是我的服务器端ajax.php
代码:
<?php
require_once 'db_const.php';
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if(isset($_GET['type']) AND $_GET['type'] == 'country'){
$result = $mysqli->query("SELECT tagname FROM tagtable where tagname LIKE '".strtoupper($_GET['name_startsWith'])."%'");
$data = array();
while ($row = mysqli_fetch_array($result)) {
array_push($data, $row['tagname']);
//echo "Hello " .$row['tagname'];
}
echo json_encode($data);
} else {
echo "hello";
}
?>
错误是我在$_GET['type']
中没有获得country的值(即未设置$_GET),并且它超出了if条件并执行else分支。
关于如何获得"$_GET['type'] == country"
,有人能帮我吗?
似乎type是一个保留字,并指定请求的类型:GET或POST。请考虑换个名字。参见jQuery文档,摘录如下相关部分:
类型(默认值:"GET")
类型:字符串
要发出的请求类型("POST"或"GET"),默认为"GET"。
注意:这里也可以使用其他HTTP请求方法,如PUT和DELETE,但并非所有浏览器都支持它们。
因此,在您的示例中,类型永远不会匹配"country",而是"GET"