
以下のようなコードでフォームを制御したいのですが、戻り値に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で質問しましょう!
似たような質問が見つかりました
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
return trueとreturn falseの用...
-
slickのレスポンシブ > center...
-
未入力のラジオボタンに、alert...
-
COBOLの数字チェック
-
チェックボックスのチェック。...
-
文字列がA-F 0-9であるかチェ...
-
ドロップダウンリストボックス...
-
onSubmit=の後ろは複数可能でし...
-
onsubmitイベントにfalseを返し...
-
DirectInputの押された瞬間の取得
-
Flashでブラウザ判定したい
-
フォームの入力チェックをする...
-
コピペを禁止するtextarea
-
Visual Studioのデザインでの非...
-
Nullの回避方法
-
プルダウン選択を変更すると、...
-
【jQuery】input nameの文字列...
-
JavaScriptで特定のtdタグにcla...
-
Selectボックスの幅を自動で広...
-
プルダウン 項目が多いので先頭...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
return trueとreturn falseの用...
-
slickのレスポンシブ > center...
-
TEXTAREAに入力した改行コード...
-
COBOLの数字チェック
-
ツリービューのチェックボック...
-
2次元配列で2項目についてソー...
-
Visual Studioのデザインでの非...
-
onSubmit=の後ろは複数可能でし...
-
分岐数といえば
-
フォームの入力チェックをする...
-
ラジオボタンのNullチェック
-
ctrl+vを無効にする方法
-
度胸試しのJavaScript
-
JavaScriptde途中で、「exit」...
-
未選択のプルダウンメニューを...
-
IE7のJavascriptで return fals...
-
未入力のラジオボタンに、alert...
-
テキストボックスに数字しか入...
-
変数の値によってsubmit後の動...
-
リロードしないようにするには
おすすめ情報