php - AJAX:如何使字段的标签和值不同?

标签 php mysql ajax

我有以下两个文件。
如何使用 AJAX 填充标签和值

例如,如果值为伊利诺伊州芝加哥。提交表格时如何获得仅芝加哥的值?

下面的字段填充为,例如,伊利诺伊州芝加哥

<!DOCTYPE html>
<html>
 <head>
  <title></title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-3-typeahead/4.0.2/bootstrap3-typeahead.min.js"></script>  
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />  
 </head>
 <body>
  <br /><br />
  <div class="container" style="width:600px;">
   <h2 align="center"></h2>
   <br /><br />
   <label>Search Country</label>
   <input type="text" name="city" id="city" class="form-control input-lg" autocomplete="off" placeholder="Type City Name" />
  </div>
 </body>
</html>

<script>
$(document).ready(function(){

 $('#city').typeahead({
  source: function(query, result)
  {
   $.ajax({
    url:"TypeaheadTest2.php",
    method:"POST",
    data:{query:query},
    dataType:"json",
    success:function(data)
    {
     result($.map(data, function(item){
      return item;
     }));
    }
   })
  }
 });

});
</script>

下面是文件 TypeaheadTest2.php

<?php
$connect = mysqli_connect("localhost", "", "", "");
$request = mysqli_real_escape_string($connect, $_POST["query"]);
$query = "
 SELECT * FROM state WHERE state LIKE '".$request."%' OR city LIKE '%".$request."%'
";

$result = mysqli_query($connect, $query);

$data = array();

if(mysqli_num_rows($result) > 0)
{
 while($row = mysqli_fetch_assoc($result))
 {
  $data[] = $row['city'] . ' ' . $row['state'];
 }
 echo json_encode($data);
}

?>

最佳答案

如果我的理解是正确的,那么您已经非常接近您的期望了。

我发现您正在服务器端连接城市和州名称。但您只想在预输入选项上显示城市名称。

我建议您将城市名称和州名称作为 PHP 对象的单独属性传递,然后在 Javascript 端根据需要使用它们。

这是示例代码, PHP:

<?php
    $connect = mysqli_connect("localhost", "", "", "");
    $request = mysqli_real_escape_string($connect, $_POST["query"]);
    $query = "
        SELECT * FROM state WHERE state LIKE '".$request."%' OR city LIKE '%".$request."%'
    ";

    $result = mysqli_query($connect, $query);

    $data = array();

    if(mysqli_num_rows($result) > 0){
        while($row = mysqli_fetch_assoc($result)){
            $data[] = array('city'=>$row['city'], 'state'=>$row['state']);
        }
        echo json_encode($data);
    }

?>

Javascript:

$(document).ready(function(){

    $('#city').typeahead({
        source: function(query, result) {
            $.ajax({
                url:"TypeaheadTest2.php",
                method:"POST",
                data:{query:query},
                dataType:"json",
                success:function(data) {
                    result($.map(data, function(item){
                        return item.city;
                    }));
                }
            });
        }
    });

});

关于php - AJAX:如何使字段的标签和值不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45871364/

相关文章:

php - 谁能推荐一个当前有效的验证码解决方案?

php - CakePHP 的外部认证/授权

php - WordPress插件开发中如何手动获取帖子缩略图URL?

python - 使用Python CGI和MySQL将用户输入的表单保存到MySQL表中

php - 实时站点上的 CodeIgniter 未加载 Controller 类

php - 加密 Controller 代码

php - 调用 codeigniter 中数组的成员函数 result()

javascript - 使用ajax加载JSON在本地浏览器中工作,但不在PhoneGap应用程序中

javascript - 当另一个请求完成时执行一个 Ajax 请求

javascript - 循环中的多个 AJAX 调用