現在、ajaxについて勉強しています。
用意したテキストボックスの中身をajax通信を使ってチェックしたい
箇所があるのですが、そこで詰まってしまって困っています。
ソースコードは以下となります。
よろしくお願いします。
###前提・実現したいこと
ajax通信でテキストボックスに入力された値をDBに格納してある値と比較し、
もし同じ値が存在していたらエラーメッセージを出力させ、登録させない。
存在していないなら登録、保存する。
###発生している問題・エラーメッセージ
ajaxでphp側に入力された値を渡し、DBを使って存在チェックをして
その結果がtrue、falseで返却されてくる。
その結果をもってしてエラーメッセージを出すか出さないか判別させたいのだが、
php側から返却された値がtrueでもfalseでも設定したエラーメッセージ
「他のコードを入力して下さい。」が表示され、DBに存在しない値の登録もできない。
###該当のソースコード
該当のテキストボックスのclassはjv-code-valid-ajaxとhtml側で定義してある。
php側は省略(渡された値をDBへ問い合わせしてEXISTSで存在チェックしているだけ。)
(JQuery) $.validator.addMethod('codecheck', function (value, input) { if (value) { $.ajax({ url: 'XXXXXXXXXXXXX', type: 'POST', data: { code: value }, dataType: 'JSON' }) .done (function(data, textStatus, jqXHR) { if (data) { // データが存在していた場合はエラー return false; } // データが存在していない場合は保存可能 return true; }) .fail (function(jqXHR, textStatus, jqXHR) { }); } }); $.validator.addClassRules({ 'jv-code-valid-ajax': {codecheck: true} }); $.extend($.validator.messages, { codecheck: '他のコードを入力して下さい。' });
###試したこと
done で返却されたdataの中身をconsole.logで表示させてみると
true、またはfalseが入っているので値としては取得できている。
doneの中では比較処理が上手くできない?
return trueを返そうがreturn falseを返そうが
「他のコードを入力して下さい。」が表示されてしまう。
###補足情報(言語/FW/ツール等のバージョンなど)
Apache/2.4.37 (Amazon)
PHP 7.1.25
CakePHP version 3.3.9
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/30 06:31
2019/08/27 01:33