【问题标题】:Typeahead input field and query passed to PHP with AJAXTypeahead 输入字段和查询通过 AJAX 传递给 PHP
【发布时间】:2013-03-11 03:04:37
【问题描述】:

我正在使用 Twitter Bootstrap Typeahead 作为自动完成字段。

最终状态目标: 用户首先在字段 1 中输入详细信息。当他们在字段 2 中输入详细信息时,ajax 会传递查询,因为它被写入 PHP 文件,该文件根据什么查询数据库也被输入到字段 1。

如何将来自字段 2 的查询和字段 1 的内容传递给 PHP 文件并访问它们。

这是我目前所拥有的:

HTML 文件

<div class="field1">
    <input type="text" id="field1" data-provide="typeahead" name="field1">
</div>
<div class="field2">
    <input type="text" id="field2" data-provide="typeahead">
</div>

<script src="js/jquery-1.9.1.min.js"></script>
    <script src="js/bootstrap.js"></script>
    <script>
$(function() {
            $("#field2").typeahead({
                source: function(query, process) {
        var textVal=$("#field1").val();
                    $.ajax({
                        url: 'field2.php',
                        type: 'POST',
                        data: 'query=' + query,
                        dataType: 'JSON',
                        async: true,
                        success: function(data) {
                            process(data);
            console.log(textVal);
                        }
                    });
                }
            });
        });
    </script>

PHP 文件:

if (isset($_POST['query'])) {
$db_server = mysql_connect("localhost", "root", "root");
mysql_select_db("db_test");

$query = $_POST['query'];
$other = '**This needs to be field 1**';

$sql = mysql_query("SELECT * FROM table WHERE row1 LIKE '%{$query}%' AND row2 = '$other'");
$array = array();

while ($row = mysql_fetch_assoc($sql)) {
    $array[] = $row['row1'];
}

echo json_encode($array);}

目前,查询部分完美运行并返回结果(控制台也显示来自'Field1'的值。只需将该值同时获取到php文件中!

任何帮助都会很棒

【问题讨论】:

    标签: php ajax bootstrap-typeahead


    【解决方案1】:

    如果我理解正确,您希望将字段 1 和 2 的值解析为同一个 AJAX 调用。这就是你的做法。

    <script>
    $(function() {
      $("#field2").typeahead({
        source: function(query, process) {
          var textVal=$("#field1").val();
          $.ajax({
            url: 'field2.php',
            type: 'POST',
            data: 'query=' + query + '&field1=' + textVal,
            dataType: 'JSON',
            async: true,
            success: function(data) {
              process(data);
              console.log(textVal);
            }
          });
        }
      });
    });
    </script>
    

    现在您只需在 PHP 文件中创建另一个 $_POST['field1']。

    【讨论】:

    • @HassaninAhmed 我收到一个错误Uncaught TypeError: Cannot read property 'toLowerCase' of undefined
    • @Rafee 这意味着你的字符串是 nil 或者你试图把 'toLowerCase' 放到。
    【解决方案2】:
    var userQuery = $('#ID of query input element').val(); 
    var field1 = $('#ID of input 1 element').val();
    $.ajax({
    type: "POST",
    url: '',
    data: {query: QueryVariable, input1: input1variable},
    success: function(data) {
            // code within this block
    }, 
    error: function() {
        alert('System Error! Please try again.');
    },
    complete: function() {
        console.log('completed')
    }
    

    }); // ***结束 $.ajax 调用

    【讨论】:

      猜你喜欢
      • 2014-02-02
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      相关资源
      最近更新 更多