我有一个HTML表单,在页面加载时运行Javascript函数。在Javascript函数中,城镇名称通过Ajax post调用发送到Php函数以从MySql数据库获取详细信息。
JavaScript函数中的Ajax调用
var town = "Town name"; //depends on the previous execution in JS function
if (town != "undefined") {
jQuery.ajax({
type: "POST",
url: '../model/data_access/GetCity.php',
dataType: 'json',
data: {town: town},
success: function (obj) {
document.getElementById("selectedLocation").value = obj[0]["name"];
document.getElementById("placeDescriptionBox").value = obj[0]["description"];
}
});
}
GetCity.php
$town = $_POST['town'];
get_city($town);
function get_city($town)
{
$place = array();
$db_conn = DBConnection::get_database_connection();
$stmt = $db_conn->prepare("SELECT * FROM place WHERE name=?");
$stmt->bind_param("s", $town);
$stmt->execute();
if (!($result = $stmt->get_result())) {
echo "Error" . $stmt->error;
}
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$place[0] = new Place();
$place[0]->set_name($row["name"]);
$place[0]->set_description($row["description"]);
echo json_encode($place);
}
}
数据库中的数据不会以HTML格式显示。我怎么解决这个问题? 我是Ajax JQuery的新手,所以非常感谢任何帮助。
答案 0 :(得分:1)
您正在发出POST请求:
type: "POST",
...但是正在尝试从查询字符串中读取数据:
$town = $_GET['town'];
jQuery会在您发出POST请求时在请求正文中发布数据,因此它会显示在$_POST
而不是$_GET
。
将type: "POST",
更改为type: "GET",
(或完全省略它,因为GET是默认值)。
答案 1 :(得分:0)
如果要检查变量是否存在则不是:
if(town!=“undefined”){}应该是if(typeof town!==“undefined”){}
答案 2 :(得分:0)
在您的ajax请求中使用$town = $_GET['town'];
时,将$town = $_POST['town'];
更改为type: "POST",
。
答案 3 :(得分:-1)
请使用javascript函数 encodeURI 编码的url传递城镇名称,请调试代码是否您的php代码返回城镇列表
var town = "Town name"; //depends on the previous execution in JS function
if (town != "undefined") {
jQuery.ajax({
type: "POST",
url: '../model/data_access/GetCity.php',
dataType: 'json',
data: {town: town},
success: function (obj) {
console.log(obj);
document.getElementById("selectedLocation").value = obj[0]["name"];
document.getElementById("placeDescriptionBox").value = obj[0]["description"];
}
});
}