PHP不能仅在DELETE和PUT方法中重新计算来自jquery的数据

时间:2017-09-11 22:33:26

标签: javascript php jquery ajax

我是一个完整的堆栈学生并且正在尝试做我的作业...我正在使用Jquery向php发送一个daya对象。 当方法是GET或POST时它工作正常,但是当它是DELETE&时不工作PUT,php得到的方法但不会得到数据对象,它给出了一个错误:Undefined index:activitiesArray。 我对所有选项使用相同的功能,如果我改变它的方法,它就可以工作。

问题 OUTPUT 调试控制台 终奌站 .. 我究竟做错了什么?? 谢谢!

这是我在javascript中的ajax:     “使用静态”;

function sendAJAX(method, url, data, calltype) {
    $.ajax({
        type: method,
        url: url,
        data: { activitiesArray: data },
        success: function(response_text) {
            callback(response_text, calltype);
        }

    });
}

这是我的php api:

$method = $_SERVER['REQUEST_METHOD']; // verb
$params = $_REQUEST['activitiesArray'];

switch ($params['ctrl']) {
    case 'Director':
        $capi = new DirectorApi();
        $result  = $capi->gateway($method, $params);
        echo json_encode($result);

        break;
    case 'Movie':
    $capi = new MovieApi();
    echo $capi->gateway($method, $params);
    break;
}

1 个答案:

答案 0 :(得分:0)

为put和delete更改这样的代码

function sendAJAX(method, url, data, calltype) {
    $.ajax({
        type: method,
        url: url,
        data: JSON.stringify({activitiesArray: data}),
        success: function(response_text) {
            callback(response_text, calltype);
        },
        dataType: 'json',
        contentType: 'application/json'

    });
}

在php方面,你不能使用$ _REQUEST来处理put请求,你可以这样做

$method = $_SERVER['REQUEST_METHOD']; // verb
$params = $_REQUEST['activitiesArray'];

if($_SERVER['REQUEST_METHOD'] == 'PUT') {
    parse_str(file_get_contents("php://input"),$post_vars);
    echo $post_vars['your_input']; // you can access query parameters like this

}
else
{
switch ($params['ctrl']) {
    case 'Director':
        $capi = new DirectorApi();
        $result  = $capi->gateway($method, $params);
        echo json_encode($result);

        break;
    case 'Movie':
    $capi = new MovieApi();
    echo $capi->gateway($method, $params);
    break;
}
}