Ajax PHP调用不起作用

时间:2017-04-24 11:27:16

标签: php jquery ajax

我尝试运行下面的代码,但它不起作用,我尝试了一切我记得但无法开始工作。

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";

2 个答案:

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