我在输入表单“城市”上使用 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);
?>
我仍然完全被困住了。任何人都可以看到代码的问题吗?我在网上到处寻找正确的语法。再次感谢