带有Php的Ajax JQuery后代码,用于查询MySql数据库无法正常工作

时间:2016-05-20 09:14:35

标签: javascript php ajax

我有一个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的新手,所以非常感谢任何帮助。

4 个答案:

答案 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"];
    }
});

}