2013-05-02 2 views
3

У меня есть вызов AJAX на мой взгляд на действие в моем контроллере. Тем не менее, я всегда получаю ошибки 400. Ниже приведен код для моего вызова AJAX:Ошибка 400 JQuery + Yii

$.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.')); 
    } 

} 

Любые идеи?

+0

Попробуйте 'dump_var' перед проверкой' isPostRequest'. И вручную проверьте url '/ dummy/index.php/module/controller/checkCross' – nk9

+0

Я пробовал делать var_dump, и все переменные правильно передаются. После var_dump ошибка «Ваш запрос недействителен». снова появляется. – jackeblagare

ответ

2

Вы ожидаете данные json, но вы отправляете пустую страницу в браузер. Вы должны закодировать такой результат:

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

В вашем коде вы вернули стоимость. Обратите внимание, что ваше сообщение об исключении yii: Прямой доступ запрещен, но ваша ошибка Ваш запрос недействителен.

+0

Хм, в то время как ваши наблюдения верны, как это объясняет ошибку 400? –

+0

Это происходит из jquery, так как ответа не было json – 2013-05-02 10:14:32

+0

Это меня очень удивляет. Код состояния является частью заголовка ответа. В случае выше сервер не отправил 400. Так вы говорите, что jQuery дает «ложный» код ответа 400, даже если сервер возвращает 200? Это где-то документально? –