2017-05-18 6 views
0

Ich versuche, Datei mit Ajax in yii2 hochladen. aber es Browser-Konsole zeigt es 400 Bad Request in meinem site_url was mein Fehler ist .. Bitte jemand helfen.Ajax-Fehler 400 schlechte Anfrage

var site_url = '<?php echo Url::to (['formdata/movefile','id'=>'']); ?>' + unic ; 
       var file_data = $('#formdata-'+ form + '-' + component + '-c_data').prop('files')[0]; 
         var form_data = new FormData();     
         form_data.append('file', file_data); 

         $.ajax({ 
        url: site_url, // point to server-side PHP script 
        dataType: 'TEXT', // what to expect back from the PHP script, if anything 
        cache: false, 
        contentType: false, 
        processData: false, 
        data: { form_data:form_data,_csrf : '<?=Yii::$app->request->getCsrfToken()?>'},       
        type: 'POST', 
        success: function(php_script_response){ 
         alert(php_script_response); 
        } 
     }); 

Antwort

0

Wenn Sie enableCsrfValidation in Ihrem yii2-Projekt aktivieren, müssen Sie Ajax-Daten ein Token hinzufügen, damit die Anfrage validiert wird.

@see

CSRF

CSRF Ajax

+0

yaa .. es crct ... Mein Fehler ist in csrf Freigabe Validierung – Prabhakaran

1

Ich glaube, Sie content zu json festlegen müssen, wie Sie json Daten

contentType: "application/json" 

So Ihre Ajax-Request

$.ajax({ url: site_url, dataType: 'TEXT', cache: false, contentType: "application/json", processData: false, data: { form_data:form_data,_csrf : '<?=Yii::$app->request->getCsrfToken()?>'}, type: 'POST', success: function(php_script_response){ alert(php_script_response); } 

wie dieses etwas sein wird senden können Sie auch bekommen 400 Bad request Fehler, wenn Sie die Daten nicht wie in der Dokumentation beschrieben an den Server senden. (in der Regel fehlen bestimmte Parameter oder Header)

+0

sry .. jetzt auch seine zeigt denselben Fehler jquery.min.js: 4 POST http: // localhost/basic/index. ? php r = formdata% 2Fmovefile & id = 45bc9afa37281707 400 (Bad Request) \t @ \t jquery.min.js senden: 4 ajax \t @ \t jquery.min.js: 4 (anonym) \t @ \t index.php r = formdata% 2Freat & id = 31: 493 jeweils \t @ \t jquery.min.js: 2 jeweils \t @ \t jq uery.min.js: 2 (anonym) \t @ \t index.php r = Formdata% 2Fcreate & id = 31: 471 Versand \t @ \t jquery.min.js: 3 r.handle \t @ \t jquery.min. js: 3 – Prabhakaran

+0

@ Prabhakaran Übergeben Sie alle Parameter wie in der Dokumentation beschrieben? – Santosh

+0

yaa .. Ich überprüfe das .. es ist nicht falsch – Prabhakaran

0

ich meinen Fehler gefunden ..

Es gab csrf Token Fehler in meinem Controller-Aktion .. so füge ich diesen folgenden Code in Controller

public function beforeAction($action) 
    { 
     if (in_array($action->id, ['movefile'])) { 
      $this->enableCsrfValidation = false; 
     } 
     return parent::beforeAction($action); 
    } 

Nun ist es gut funktionierend

Vielen Dank an alle :-)))))))