我有一个小项目,我正在尝试使用 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。