我尝试运行下面的代码,但它不起作用,我尝试了一切我记得但无法开始工作。
AJAX致电
var status = $(this).prop("checked");
var room_id = id;
$.post('maintenanceControl.php', {action: status, id: room_id});
PHP脚本
<?php
if (isset($_POST['action']) && !empty($_POST['action']) && isset($_POST['id']) && !empty($_POST['id'])) {
$action = $_POST['action'];
$id = $_POST['id'];
if ($action) {
return manageMaintenance($id, true);
} else {
return manageMaintenance($id, false);
}
}
function manageMaintenance($room_id, $status)
{
$jsonString = file_get_contents('status.json');
$data = json_decode($jsonString, true);
foreach ($data['rooms'] as $key => $entry) {
if ($key == $room_id) {
$data[$key]['maintenance'] = $status;
}
}
$newJsonString = json_encode($data);
file_put_contents('status.json', $newJsonString);
return true;
}
起初我认为这是一个故障,但下面的例子工作得很好
$.post( "test.php", function( data ) {
alert(data);
});
PHP
<?php
echo "test";
答案 0 :(得分:2)
为了将数据恢复到Javascript ajax调用,您需要php脚本回显。
php中的返回值无法回到Ajax调用中。
通常情况下,php脚本会回显一个值,无论是单个值,还是希望从php中获取更复杂的数据回到Ajax调用,您可以json编码多个值并回显它。
答案 1 :(得分:0)
你必须在php脚本中回显/打印一些东西来发送对ajax请求的响应。你必须做类似下面的事情。
$response=false;
if (isset($_POST['action']) && !empty($_POST['action']) && isset($_POST['id']) && !empty($_POST['id'])) {
$action = $_POST['action'];
$id = $_POST['id'];
if ($action) {
$response=manageMaintenance($id, true);
} else {
$response=manageMaintenance($id, false);
}
}
function manageMaintenance($room_id, $status)
{
$jsonString = file_get_contents('status.json');
$data = json_decode($jsonString, true);
foreach ($data['rooms'] as $key => $entry) {
if ($key == $room_id) {
$data[$key]['maintenance'] = $status;
}
}
$newJsonString = json_encode($data);
file_put_contents('status.json', $newJsonString);
return true;
}
echo $response==true? "OK" : "FAILED";