ホームページ  >  記事  >  ウェブフロントエンド  >  formValidator3.3_jqueryのajaxValidatorの例外解析

formValidator3.3_jqueryのajaxValidatorの例外解析

WBOY
WBOYオリジナル
2016-05-16 18:04:471153ブラウズ

Ajaxvalidator は最もよく寄せられる質問であり、バグを修正し (ネチズン「じ龙峸√」に感謝します)、誰もが最も懸念している問題について詳しく説明しました。
バグ現象: 検証に合格したかどうかに関係なく、コントロールが再びフォーカスを取得し、再びフォーカスを失うと、ヒントのプロンプトがフォーカス プロンプトで停止します
以前のアップグレードの関連記録:
a. AjaxValidator に addidvalue 属性を追加します (URL パラメータの後に ID と値を自動的に追加するかどうか)
AjaxValidator が情報を設定するときにランタイム値を取得できないバグを修正するために、プラグインはそれを自動的に追加しますURL の後に「id=value」の形式で指定します。
サーバー側では、Request.querystring["id"] を通じて値を取得できます。 特定のデモについては、demo1 のユーザー名入力と Default.aspx を参照してください。
例外の説明:
開発プロセス中に文字化けが発生します
例:

コードをコピー コードは次のとおりです:

$("#thename").formValidator({onfocus:"ユーザー名は少なくとも6 文字、最大 40 文字" ,oncorrect:"入力形式は正しいです"}).inputValidator({min:6,max:40,onerror:"入力したユーザー名は不正です。確認してください"})// .regexValidator({regexp:"username",datatype :"enum",onerror:"ユーザー名の形式が正しくありません"})
.ajaxValidator({
type : "get",
url : "login .do",
data:"action =isExist",
datatype : "xml",
success : function(data){
root = data.documentElement;
var rowSet = root .selectNodes("//delete");
if( rowSet.item(0).selectSingleNode("value").text == "0" )
{
return true;
else
{
return false;
}
}、
ボタン: $("#saveId")、
エラー: function(){alert("サーバーデータが返されませんでした。サーバーがビジー状態である可能性があります。もう一度お試しください。" );}、
onerror: "ユーザー名が利用できません。ユーザー名を変更してください。"、
onwait: "ユーザー名が有効であるかどうか検証中です。お待ちください..."//function() {alert($("#pcode").val());}
});

説明:
データ:"action=isExist&thename=" $('#thename').val()、$('#thename').val() は固定で初期値であり、通常は空であるため、このメソッドは無効です。
変更。ソースコード:
formValidator.js
//ajax 検証
ajaxValid: function(returnObj) のメソッドで、

var parm = "clientid=" id "&" id "= encodeURIComponent(srcjo.val ());
var parm = "clientid=" id "&" id "=" encodeURIComponent(encodeURIComponent(srcjo.val())); > フロントエンドを介して 2 回エンコードされるだけなので、バックグラウンドで 1 回のデコードでコード文字化けの問題を解決できます
thename=java.net.URLDecoder.decode(thename, "UTF-8");
フロントエンドは 2 回エンコードする必要があります。そうしないと、文字化けが発生します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。