以下のようなコードでフォームを制御したいのですが、戻り値にfalseを返しているのにフォーム送信されてしまいます。
chekData はDB(mysql)にアクセスして重複チェックするだけのものです。
firefoxのエラーコンソールでは以下のようなエラーを出しますが意味がよくわかりません。
エラー: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://192.168.49.128/js/scripts.js :: anonymous :: line 52" data: no]
ソースファイル: http://192.168.49.128/js/scripts.js
行: 52
---------------------- Javascript -----------------------------
function checkData(vender) {
ajax.open("GET", "chkDvl.php?dvl=" + encodeURI(vender),true);
ajax.onreadystatechange = function() { <<<< 問題の52行目
if (ajax.readyState == 4 && ajax.status == 200) {
var res = decodeURI(ajax.responseText);
if (res != 0) {
window.alert(vender + " " + res + "は既に登録済です");
return false;
}else{
return true;
}
}
}
ajax.send(null);
}
----------------------------- HTML ---------------------------
<form action="test.php" method="post"
onsubmit="return checkData(this.dvl.value)">
<input name="dvl" type="text" />
<input name="button" type="submit" value="送信" />
</form>
ちなみに別のソースの非同期通信を使用しないものはsubmitの制御はできています。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
checkData関数はfalseを返していませんね。
エラーチェックの判定結果でtrue/falseを返している部分は、
あくまで onreadystatechange に対してですので。
checkData関数の最後、ajax.send(null);の後に無条件でreturn falseし、
エラーチェックの判定結果でtrue/falseを返している部分で、
エラーでなければフォームをsubmitするような造りにするといいかと思います。
teel_gray さん、回答ありがとうございます。
確かに言われてみれば、returnの値は外に返していないですね。言われたとおりにしたら解決しました。
ajaxに関しては、よく分からずサンプルを利用しているのでトラブルと自己解決が中々出来ません。
大変助かりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
return trueとreturn falseの用...
-
JavaScriptde途中で、「exit」...
-
Javascript? チェックボックス...
-
slickのレスポンシブ > center...
-
onsubmitイベントにfalseを返し...
-
ドロップダウンリストボックス...
-
ドラッグ&ドロップ禁止について
-
Visual Studioのデザインでの非...
-
関数から一気に抜ける
-
COBOLの数字チェック
-
チェックボックスの有無判定
-
JavaScript ログアウト処理
-
Javascriptの"return "について
-
分岐数といえば
-
hiddenのvalueの値を変えたい
-
<JavaScript>tableタグを入力不...
-
プルダウン 項目が多いので先頭...
-
スマホのフォームでのselect複...
-
画面表示とともに、テーブルの...
-
JavaScriptのfileオブジェクト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
return trueとreturn falseの用...
-
slickのレスポンシブ > center...
-
JavaScriptde途中で、「exit」...
-
フォームの入力チェックをする...
-
COBOLの数字チェック
-
コピペを禁止するtextarea
-
Visual Studioのデザインでの非...
-
TEXTAREAに入力した改行コード...
-
分岐数といえば
-
2次元配列で2項目についてソー...
-
変数の値によってsubmit後の動...
-
ラジオボタンのNullチェック
-
ツリービューのチェックボック...
-
未入力のラジオボタンに、alert...
-
【javascript】 年齢計算
-
テキストボックスに数字しか入...
-
チェックボックスの有無判定
-
IE7のJavascriptで return fals...
-
onsubmitイベントにfalseを返し...
-
JavaScript ログアウト処理
おすすめ情報