【发布时间】:2015-07-23 07:32:44
【问题描述】:
我正在制作一个网络应用程序。主索引页面有一个用于搜索的大输入标签。一个人输入一个手机号码,通过 AJAX 和 php,我对 MySQL 数据库进行实时搜索。
我能够从数据库中检索所需的行。我试图在结果数组上做一个 print_r() ,它出现了。但是当我尝试只使用数组的一个元素时,它没有。
请看能否找到问题:
Javascript
<script>
$(document).ready(function(e) {
$('#search').keyup(function(e) {
if($(this).val().length > 2){
$.get('php/search.php', {input: $(this).val()}, function(data){
alert(data);
});
}
});
});
</script>
php/search.php 文件是:
<?php
require_once 'customer.php';
$input = $_REQUEST['input'];
print_r($cus->read($input));
?>
而customer.php文件是:
public function read($input) {
//What search needs to do
//Part 1 - Check if input is a mobile number or Text
if(is_numeric($input) && strlen($input) > 2){
//Search in mobile number
$sql = "SELECT * FROM customers WHERE mobile LIKE '{$input}%' LIMIT 1";
$result = $this->query($sql);
$output = json_encode(mysqli_fetch_assoc($result));
return $output;
}else{}
}
$cus = new Customer();
如果我删除 search.php 中的 print_r 函数并在 javascript 中更改
alert(data);
到
alert(data[0]);
我收到一条提示“未定义”的警报。
如果我改成很奇怪
alert(data[id]);
什么都没有发生。但如果我改为
alert(data[name]);
我又不确定了。
【问题讨论】:
-
你需要从 php.ini 输出数据。尝试将print_r改为echo,JS需要先使用
$.parseJSON(data) -
PHP 必须始终为 AJAX 回显某些内容,返回是不行的。
-
您在解析 json 时遇到问题。您可以找到一些关于此的问题。
-
如果您在 javascript 中将返回数据作为 JSON 处理会更好