
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
入力フォームの値をQRコードで...
-
ワードでA3横の画面にして、文...
-
正規表現で、特定の文字列を含...
-
1枚の画像をクリックすると複数...
-
PDFを(htmlのように)無限に縦...
-
バッチファイル 特定ウインドウ...
-
Ajaxでsessionにいれた値が引き...
-
VBA コンボボックスの値をスピ...
-
bxsliderで複数のvimeoスライド...
-
b75h2-m2 biosアップデートした...
-
php コールバック関数
-
ナイトボットのAliasについて
-
これってなんの電話かわかりま...
-
VBAでクイズゲームの作り方
-
以下のURL入れますか?皆さんは↓
-
画像のドットの部分が抜けてい...
-
Chinapost こよパズルどう動か...
-
非同期通信で掲示板を作る際の...
-
非同期通信を使うタイミングが...
-
PYTHONのtkinterについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
非同期通信を使うタイミングが...
-
OVERLAPPED構造体が分かりませ...
-
このプログラムの使用がわかる...
-
ExcelVBAで非同期のsocket通信...
-
RS-232Cの通信方式に関して。
-
VistaガジェットでGmailのメー...
-
Ajaxの意味について
-
SRAM製品の同期・非同期の違い
-
非同期関数とノンブロッキング...
-
AJAX通信のエラー処理について
-
非道式6進カウンタと非同期式10...
-
iTunesで同期させる曲目を指定...
-
AJAX通信が終わるまで次の処理...
-
JK-FFを使う非同期10進・2進カ...
-
AJAXとSEO。同期通信とPHP送信...
-
Javadcriptでwebサーバー側にあ...
-
ajaxの使いどころ
-
C#でUDP通信
-
Asrock(P4i65G)のBiosについて
-
AJAX通信で、ボタンをクリック...
おすすめ情報