当请求方法是GET但在POST方法中失败时,为什么这个ajax请求成功

时间:2017-07-21 12:50:45

标签: php ajax yii2

当我将请求类型设置为“GET”时,(并且在服务器端也使用$ _GET),它成功获取响应, 但是当我将类型设置为POST时,会给出400 errorMissing required parameters: student_id

以下是代码:

$.ajax({
        type: "GET",
        url: "?r=fees/fees/transactions",
        dataType: "json",
        data: { student_id: student_id },           
        success:function( msg ) { 
            console.log(msg);
        },
        error: function(xhr, ajaxOptions, thrownError){
            console.log("failed");
            console.log(xhr.responseText);
            console.log(ajaxOptions);
            console.log(thrownError);    
        }
});

以下是我将请求方法设置为GET时的请求URL:

http://localhost/demo.git/index.php?r=fees/fees/transactions&_csrf=bEJJWVowdl8jBwQjaUMsAA52eT8MXBMLJigwHTxeKSlVKyxoD2o5KQ%3D%3D&student_id=10115"

当我将上述请求类型设置为POST并通过POST方法在服务器端接收变量时,为什么这不起作用?

这是服务器端操作(我正在使用Yii2 MVC框架)

public function actionTransactions($student_id){
    $student_id = $_POST['student_id'];
        ...
        ...   
    echo json_encode($response);

}

1 个答案:

答案 0 :(得分:2)

您的函数需要来自$student_id方法的参数GET。如果您使用AJAX发送请求,请使用data: { 'student_id': student_id }, - 它将被添加到您发送AJAX的URL中。

如果您想使用POST方法,则必须修改您的网址:

url: "?r=fees/fees/transactions?student_id=" + student_id,

然后移除data键。

第二个解决方案是从$student_id中删除actionTransactions个参数,然后系统将接受$student_idGET之后没有$_REQUEST的请求,但您必须确保&#{1}} 39; s在this.modalCtrl.create(ReminderDetailsPage, { data: data });