【问题标题】:Error 400 JQuery + Yii错误 400 JQuery + Yii
【发布时间】:2013-05-02 08:56:37
【问题描述】:

在我的视图中,我对控制器中的操作进行了 AJAX 调用。但是,我总是收到错误 400。下面是我的 AJAX 调用的代码:

    $.ajax({
        cache: false,
        url: '/dummy/index.php/module/controller/checkCross',
        dataType: 'json',
        type: 'POST',
        data : {"male":parents[0],"female":parents[1]},
        success: function(result){
            alert(result);
        }
    });

以下是控制器中的代码:

 public function actionCheckCross(){

     if(Yii::app()->request->isPostRequest) { // check if POST
        $flag = CrossingMatrix::model()->checkParentsIfCrossed($_POST['male'],$_POST['female']);

        if($flag){
            return true;
        }

        else{
            return false;
        }

    } else { // direct URL request will be GET, so show error
        throw new CHttpException(400, Yii::t('app', 'Direct access is not allowed.'));
    }

}

有什么想法吗?

【问题讨论】:

  • isPostRequest检查之前尝试dump_var。并手动检查 url /dummy/index.php/module/controller/checkCross
  • 我尝试做一个 var_dump 并且所有变量都正确传递。在 var_dump 之后,出现错误“您的请求无效。”再次弹出。

标签: php jquery ajax yii


【解决方案1】:

您期待 json 数据,但您将空页面发送到浏览器。你应该像这样编码结果:

echo CJavascript::jsonEncode((bool)$flag);
Yii::app()->end();

在您的代码中,您返回了值。请注意,您的 yii 异常消息是不允许直接访问,但您的错误是 您的请求无效。

【讨论】:

  • 嗯,虽然您的观察是正确的,但这如何解释 400 错误?
  • 这来自jquery,因为响应不是json
  • 这让我很吃惊。状态码是响应头的一部分。在上面的情况下,服务器没有发送任何 400。所以你说,即使服务器返回 200,jQuery 也会给出 400 的“假”响应代码?这是否记录在某处?
  • 我只是做了一个小测试,无法验证这一点。如果您不返回 JSON,但从不返回 400,您会收到一些客户端错误。所以我认为,这是导致 400 的其他原因。
  • 你说得对,即使json响应无效状态仍然是200,所以这个400标头的来源是别的。
猜你喜欢
  • 2012-04-01
  • 2016-03-05
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 2015-09-03
  • 1970-01-01
相关资源
最近更新 更多