2015-12-01 8 views
0

Я использую следующий JS код для отправки AJAX запроса:JQuery Ajax вызов получает 400 плохой запрос

var data = JSON.stringify({ 
      'user_id': '<?=$user->id?>', 
      'package_id': '<?=$bundle->package_id?>', 
      'YII_CSRF_TOKEN': '<?=Yii::app()->request->csrfToken?>' 
     }); 

     $.ajax({ 
      url: "/bundle/ajaxRemove", 
      data: data, 
      type: "POST", 
      contentType: "application/json", 
      dataType: "json", 
      error: function (xhRequest, ErrorText, thrownError) { 
       alert("Failed to process user correctly, please try again"); 
       console.log('xhRequest: ' + JSON.stringify(xhRequest) + "\n"); 
       console.log('ErrorText: ' + ErrorText + "\n"); 
       console.log('thrownError: ' + thrownError + "\n"); 
      } 

     }).done(function (msg) { 
      console.log(msg); 
     }); 

Проблема заключается в том, когда я отправить этот код, сервер постоянно возвращается сообщение об ошибке 400 Bad Request ,

Я попытался представить в качестве пост данных вместо данных json и по-прежнему получать ту же ошибку. Вырывая мои волосы!

Любая идея, что я могу сделать неправильно?

+0

Итак, где же ваш код на стороне сервера? Какую отладку вы сделали на стороне сервера, чтобы понять, почему возвращается 400? –

ответ

-1

По определению Данные JSON должны быть в двойных кавычках, а не в одинарных кавычках.

Если вы отправляете данные с помощью ajax, гораздо проще дать данные ajax JSON, а затем преобразовать их самостоятельно.

Следующая точка: Вы пытаетесь использовать PHP в ваших JS или вы хотите отправить например .:

"<?=$user->id?>" 
+0

JSON, выпущенный JSON.stringify, будет иметь двойные кавычки. Что происходит, он передает литерал js-объекта для сериализации. Нет проблем. –

0
$.ajax({ 
        dataType: 'json', 
        type: 'POST', 
        contentType: false, 
        data: { 
         user_id: '<?=$user->id?>', 
         package_id: '<?=$bundle->package_id?>', 
         YII_CSRF_TOKEN:'<?=Yii::app()->request->csrfToken?>'}, 
        url: '<?php echo Url::to(["/bundle/ajaxRemove"]); ?>', 

        success: function(data) { 


        }, 
        error: function (xhRequest, ErrorText, thrownError) { 
        alert("Failed to process user correctly, please try again"); 
        console.log('xhRequest: ' + JSON.stringify(xhRequest) + "\n"); 
        console.log('ErrorText: ' + ErrorText + "\n"); 
        console.log('thrownError: ' + thrownError + "\n"); 
        } 
       }); 

Попробуйте это.

Смежные вопросы