自分のエラーログ:jQuery
for(var item in jqXHR.responseJSON.errors) {
alert(jqXHR.responseJSON.errors[item]);
}①属性のセレクタにシングルコーテーション''付け忘れる
$('input[name="price_without_tax1"]')
②AjaxでLaravelにPOST通信したら 419 エラー
CSRF対策されていないのが原因。
bladeファイルに下記を書くだけではだめだった。
<meta name="csrf-token" content="{{ csrf_token() }}">
jsファイルに下記を書くこと。
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
②AjaxでLaravelにPOST通信したら 500エラー
いろいろ検索して$.postやめて$.ajaxにすることに。
やっていることは同じ。書き方が違うだけ。
※多分変更した意味はなかった。
$.ajax({
url: '/calculate',
type:'POST',
data: params,
dataType: 'json'
})
.done(function(data) {
//処理
}
③Controllerまでは行って変数タイプミスでエラー
→500番
④The GET method is not supported for this route. Supported methods: POST.
のエラー。
おそらくControllerの処理後、返ってくるメソッドがPOSTでなくGETになっている模様。
return json($data);
を↓に書き換え。
return response()->json($data);
→解決!
⑤返ってきたJSONデータをアラートに表示できない
(1)
.fail(function(data) {
alert(console.log(data.responseText));
}
→コンソールには中身が出た!アラートにはundefinedとしか表示されない。
(2) HTMLテキストに表示してみる
HTML
<p id="result"></p>
JS
.fail(function(jqXHR) {
$("#result").html(jqXHR.responseText);
});
→これならできた!
(3) 配列をアラートに表示する方法↓を参考にやってみる
https://www.sejuku.net/blog/29821
for(var item in jqXHR.responseText) {
alert(jqXHR.responseText[item]);
}
→1文字ずつ表示される!笑 "m" "e" "s" "s" "a"... 何度もOK押させられる
(4) もう一個の方を展開してみる
for(var item in jqXHR.responseJSON) {
alert(jqXHR.responseJSON[item]);
}
The given data is invalid
Object object
→惜しい!
(5) Objectを展開してみる
for(var item in jqXHR.responseJSON.errors) {
alert(jqXHR.responseJSON.errors[item]);
}
→できた!!!
(6) ↑だとエラーの数だけOK押さないといけないから、すべてのエラーが一度に見れるようにする。
.fail(function(jqXHR) {
var alertText = "";
for(var item in jqXHR.responseJSON.errors) {
alertText += jqXHR.responseJSON.errors[item] + "\n";
}
alert(alertText);
});
→できた!!!^^