jQueryを利用したAJAX通信で、「●●.js」が不定期エラーになるのですが、エラーの意味も原因も分かりません。
Uncaught TypeError: Cannot read property 'age' of null
■質問1
$.postではエラーを捕捉出来ないと書いてあったので、$.ajaxに書き換えたいのですが、書き方がよく分かりません。どう書き直せば良いでしょうか?
■コード
▼「●●.js」
$.post('test.php',{action: "getmemberdata"},function(data){
jsondata = $.parseJSON(data);
if(jsondata == null){
return true;
}
処理
});
if(Number(jsondata.age)>10){←この箇所で不定期で上記エラーが発生!
▼「test.php」
// Echo Data For Ajax
if($_POST['action']=='getmemberdata'){
処理
echo json_encode(データ);
■質問2
AJAX通信の確認をサーバ側で行うことは出来ないのでしょうか?
「test.php」で、echo json_encode(データ);する前に、
echo データ;
exit;
としてみたのですが、処理が途中で止まらず、変数の中身を確認することが出来ません。
AJAX通信の確認は、$.ajaxのエラー処理でしか確認することは出来ないのでしょうか?
■質問3
(Number(jsondata.age)>10)がエラーになるので、何とか回避したいのですが、
回避する方法はあるでしょうか?
if(jsondata.age==null){
とか書いてみたのですが、うまくいきませんでした
No.1ベストアンサー
- 回答日時:
>■質問1
http://www.koikikukan.com/archives/2012/10/02-00 …
>■質問2
コールバック関数でデータを受け取れたかどうかの確認は出来ます。
または、サーバーにファイル(ログファイル)として保存しておけば、そのファイルの内容を見る事で確認できます。
>■質問3
jsondataの扱いはtest.phpの受信完了後に処理してますか?
(コールバック関数内に限らず、受信が完了してjsondataに代入できているなら、onclickでもいつでも良いので)
回避するだけなら、
if( jsondata == null ){
if( Number(jsondata.age)>10) {
でいいと思います。
null、undefined、''をNumber()で型変換すると0になりますので、.ageがnullかどうかを判断する必要はないと思います。
(0とnullを区別するのでなければ。)
回答ありがとうございました。
その後、アドバイスを元に、$.ajaxに書き直してみたところ、
エラー捕捉出来ず、そこでようやく、原因が$.ajax以外だということが分かりました。
(最終的にはセッション不具合でした)
色々参考になりましたー
No.2
- 回答日時:
Ajax通信が非同期モードで行われていて、$.postの処理が完了しないままif文に突入しているように思います。
$.ajaxはパラメータで通信モードを非同期か同期かを指定できるし、通信成功時や失敗時の処理が切り分けできるのでオススメします。
回答ありがとうございました。
>$.ajaxはパラメータで通信モードを非同期か同期かを指定できるし、通信成功時や失敗時の処理が切り分けできるのでオススメします
これまであまりエラー処理の重要性を認識していなかったのですが、
今回、原因の切り分けに苦労したこともあり、
エラー処理はやっぱ書くべきだ、
そのためには「$.ajax」を使うべきだ、と思うようになりましたー
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
以下のURL入れますか?皆さんは↓
-
入力フォームの値をQRコードで...
-
バッチファイル 特定ウインドウ...
-
非同期通信を使うタイミングが...
-
ajax
-
生コンの立米数の出し方
-
RPA(PowerAutomate)の実装について
-
PYTHONのtkinterについて
-
Pythonを勉強する道のり
-
Pythonを無料(安価)で学ぶ方...
-
Pythonのjupiter Labを使ってます
-
1w=1j.s
-
GASでスプレッドシートの一番上...
-
クライアントサイドとサーバー...
-
フレームワークについて
-
日本語版アンサイクロペディア...
-
【Apple Script】変数の入れ方
-
Googleマップに複数のピンを立...
-
HTML タグへのstyle記載の違い
-
通知を非表示にしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
非同期通信を使うタイミングが...
-
非同期関数とノンブロッキング...
-
AJAX通信が終わるまで次の処理...
-
コールバック関数
-
OVERLAPPED構造体が分かりませ...
-
Javadcriptでwebサーバー側にあ...
-
非道式6進カウンタと非同期式10...
-
AJAX通信のエラー処理について
-
PHP + Ajax or node.js or ?? ...
-
サイトのデータ(HTML)を取得
-
ajaxの使いどころ
-
wininet.dllのInternetOpenの同...
-
SRAM製品の同期・非同期の違い
-
非同期式3進カウンタ
-
ExcelVBAで非同期のsocket通信...
-
phpとajaxの比較
-
JK-FFを使う非同期10進・2進カ...
-
リロードなしのチャットやWebア...
-
iTunesで同期させる曲目を指定...
-
C# 非同期処理で複数のメソッド...
おすすめ情報