0

我在输入表单“城市”上使用 jquery 自动完成功能,但我希望我的“autocity.php”文件中的查询仅建议预先选择的国家/地区的城市,即WHERE City LIKE '%$term%'" AND CountryID = '%$country%'。表单操作提交使用单独的 PHP 文件 (create-business.php) 将表单数据插入数据库,因此通常的 $_POST['Countries_CountryId'] 在 autocity.php 中不起作用。这就是为什么我现在使用 AJAX 将“国家”发布到 autocity.php。此外,如果有一种方法可以从 autocity.php 文件中回显/警报/print_r,那就太好了,这样我就可以确认 ajax 帖子中的 $_POST['$country'] 到达 autocity.php 文件。

我在表单中有两个输入框

<pre>`
<form id="input" action="php/create-business.php" method="post">
<select name="Countries_CountryId" id="country">
<input type="text" id="city" name="City">`
</pre>

这是表单中的脚本

<script>
$(function () {
var country = $("#country").val();
$.ajax({
type:"POST", url:"autocomplete/autocity.php", data:"country",         
beforeSend:function () {
// alert(country);
}, complete:function () {  // is there any need for this?
}, success:function (html) {  // is there any need for this too?
}
});

$("#city").autocomplete(
             {
             source:'autocomplete/autocity.php'
             })
    });
</script>

这是autocity.php

`
//数据库连接工作正常并自动完成
//建议在没有 AND CountryID = '%$country%' 部分的情况下有效。  

    $国家 = "";
    if (isset($_POST['country'])) {
    $country = trim($_POST['country']);}
    echo "window.alert($country);"; //这什么也没做没有警报

    $term = $_REQUEST['term'];
    $req = "选择城市
            来自城市
            WHERE City LIKE '%$term%' AND CountryID = '%$country%'";

    $query = mysql_query($req);
    而 ($row = mysql_fetch_array($query)) {
        $results[] = array('label' => $row['City']);
    }
    回声 json_encode($results);
    ?>`
    

所以问题基本上是:

1 - 我如何在 .php 文件中使用 AJAX 表单中的文本输入,该文件查询不是提交表单操作 .php 文件的 MySQL db

2 - 当使用 ajax 显示 php 文件收到我的 ajax 帖子时,我如何从 PHP 文件中提醒 post 变量。在我的简短经验中, echo 和 print_r 仅在网页更改显示我的表单提交到表单操作的结果时才对表单提交起作用。

3-我的语法怎么样?

非常感谢您提前帮助这个新手:D


好的,这是我尝试过的事情的更新。我想我很接近了。我正在使用 Jquery UI - //ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js

这是脚本方法1:

   $(document).ready(function () {
    var country = $('#country').value();
    alert(country + " complete");
    $("#city").autocomplete(
          {
            source:'autocomplete/autocity.php?country='+country,
            minLength:1
           });
        });

这是脚本方法2:

 $(document).ready(function () {

    $('#city').autocomplete({
        // source: function() { return "GetState.php?country=" + $('#Country').val();},
        source:function (request, response) {
            $.ajax({
                url:"autocomplete/autocity.php",
                //dataType:"json",
                data:{
                    term:request.term,
                    country:$('#country').val()
                },
                success:function (data) {
                    response(data);
                }
            });
        },
        minLength:2
    });
  });

我更喜欢方法 2,因为它允许我添加多个参数。

最后这是我最新的 autocity.php 代码

 <?php
    $term = $_REQUEST['term'];
    $country = $_REQUEST['country'];
    $req = "SELECT City
    FROM cities
    WHERE City LIKE '%$term%' AND CountryID = '%$country%' ";

    $query = mysql_query($req);

    while ($row = mysql_fetch_array($query)) {
    $results[] = array('label' => $row['City']);
    }

    echo json_encode($results);
     ?>

我仍然完全被困住了。任何人都可以看到代码的问题吗?我在网上到处寻找正确的语法。再次感谢

4

1 回答 1

0

对于第一个问题,您的方法基本上是正确的。您可以绑定到特定字段的模糊事件,并使用您的函数来获取该字段的值并以您正在执行的方式提交给 php 脚本。$.blur() 是你要找的。

对于第二个问题,error_log 函数会将内容写入 php 的错误日志。如果您使用 print_r 将变量转储到此日志,请确保将 print_r 的第二个参数设置为 true 以将结果作为返回值输出。

于 2013-02-14T23:46:54.463 回答