yii2 ajax投稿送信エラーを解決します不正なリクエスト#400--データ送信スキームを確認できません
原因分析
yii2.0のアンチcsrfの問題が原因で、csrftokenがないと送信に失敗します。
最初の解決策は、Csrfをオフにすることです
コントローラ内で閉じています
public $enableCsrfValidation = false;
または
public function init(){
$this->enableCsrfValidation = false;
}
2番目の解決策は、フォームに非表示フィールドを追加することです
csrftoken非表示ドメインを自分で追加し、他のデータと一緒にコントローラーに渡すことができます。
<input type="hidden" name="_csrf" id="_csrf" value="<?= Yii::$app->request->getCsrfToken() ?>">
ここでnameの値を_csrfとして渡すことが重要です。最初にname = _csrfを渡しました。成功しなかった場合は、理由を見つけてください。ここでのトークン名は、構成で定義されたパラメーターと同じである必要があります。フレームワーク内のファイル。名前は同じです。main.php構成ファイル
3番目の解決策は、AJAXに_csrfフィールドを追加することです。
var csrfToken = $('meta[name="csrf-token"]').attr("content");
$.ajax({
type: 'POST',
url: url,
data: {_csrf:csrfToken},
success: success,
dataType: dataType
});