【问题标题】:Live AJAX search mobile numbers实时 AJAX 搜索手机号码
【发布时间】: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 处理会更好

标签: php jquery mysql ajax


【解决方案1】:

试试这个

$(function() {
  $('#search').keyup(function(e) {
    var val = $(this).val();
    if (val.length > 2) {
      $.get('php/search.php', {
        input: val
      }, function(data) {
        var res = $.parseJSON(data);
        if (res) alert(res["name"]);
      });
    }
  });
});

【讨论】:

  • 太棒了!只是想看看 $.parseJSON() 是如何使用的。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多