从 PHP 读取变量并使用 js 执行选择查询


Reading variables from PHP and performing a select query using js

我有一个小项目,我正在尝试使用 ajax 将变量放入我的 js 文件中。

这是我的js文件:

function get_sites() {
$.ajax({
    method: "POST",
    url: "server/newEmptyPHP1.php",
    dataType: "json",
    data: {type: "tasks"},
    success: function (data) {
    }
});
}

这是我的PHP文件:

if (isset($_POST["type"])) {
    $type = $type = $_POST["type"];
    $returned_value = ""; //default value
    switch ($type) {
        case "tasks":
            $returned_value = display_tasks($conn);
            break;
    }
    $conn->close();
    echo $returned_value;
}
function display_tasks($conn) {
    $query = "SELECT * FROM `Site`;";
    $result = mysqli_query($conn, $query);
    $html = "";
    $final_result = array();
    if ($result) {
        $row_count = mysqli_num_rows($result);
        for ($i = 0; $i < $row_count; ++$i) {
            $row = mysqli_fetch_array($result);

            $task = array("id" => $row["ID"], "av" => $row["availability"], "lng" => $row["lng"], "lat" => $row["lat"]);
            $final_result["Site"][] = $task;
        }
    }
    print_r(json_encode($final_result));
    return json_encode($final_result);
}

输出:

{"Site":[{"id":"1","av":"1","lng":"16.963777","lat":"42.548664"},{"id":"2","av":"0","lng":"16.96376","lat":"42.548685"}]}

如您所见,这是我从该 PHP 文件中获取的数组,但我无法很好地处理它,那么如何从上一个数组中获取 js 文件中的变量呢?

你可以尝试JSON解码。或者为了获取数据作为响应,您必须执行以下操作:

...
success: function (data) {
    jQuery.each(data, function () {
        console.log(this);
        jQuery.each(this, function () {
            console.log("av=" + this.av + " --> id=" + this.id + " --> lat=" + this.lat + " --> lng=" + this.lng);
        });
    });
}
...

一种使用直接引用的方法

JavaScript 并不强制要求解码 json 数据,因为它可以使用直接对象引用访问json数据。

var data = {"Site":[{"id":"1","av":"1","lng":"16.963777","lat":"42.548664"},{"id":"2","av":"0","lng":"16.96376","lat":"42.548685"}]};

console.log(data.Site);
console.log(data.Site[0]);
console.log(data.Site[1]);
console.log(data.Site[0].id);
console.log(data.Site[0].av);
console.log(data.Site[0].lng);
console.log(data.Site[0].lat);
var data = data.Site; // you can avoid use capitals as in your output `Site`
for ( var i = 0 ; i < data.length ; i++){
    var d = data[i];
    console.log('--------------------------');
    console.log(d);
    console.log(d.id);
    console.log(d.av);
    console.log(d.lng);
    console.log(d.lat);
}

它也支持没有jQuery。