まず、単純な js
jquery ajax 戻り値のコードを見てみましょう
function getReturnAjax{
$.ajax({
type:"POST",
http://www.cnblogs.com/wlmemail/admin/"ajax/userexist.aspx ",
data:"username=" vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"< img src= 'images/ok.gif'/>
このユーザー名はを使用できます",false)
return true ;
}
else
{
showtipex(vusername.id,"
ユーザーは登録されています",false);
vusername.className="bigwrong";
return false;
}
}
});
}
しかし、getReturnAjax() を呼び出すと、返されるのは false だけであることがわかります。つまり、return true と return false はまったく効果がありません。 firebug を使用して Firefox でデバッグすると、コードが戻り部分までまったく実行されないこともわかります。
関数で変数を定義し、それを ajax で代入し、最後に関数の最後で変数を返すことを想像してみましょう。コードを次のように変更します。
コード
function getAjaxReturn()
{
var bol= false;
$.ajax({
type:"POST",
http://www.cnblogs.com/wlmemail/admin/"ajax/userexist.aspx",
data:" username=" vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"
このユーザー名は",false)
// return true;
bol=true;
}
else
{
showtipex(vusername.id,"
ユーザーは登録されています",false);
vusername.className="bigwrong";
//return false;
}
}
});
return bol;
}
結果はまだ機能しません。最終的な解決策は次の 2 です。
1. async:false を追加します。これは何を意味しますか? (同僚の説明によると、次の js は、ajax が戻り値を取得するまで実行されません。これにより、過去の多くの ajax 呼び出しでの代入が機能しなかったことが明らかになります)。このように、ajaxがbolに値を代入した後、以下のjs部分が実行されます。先ほど非同期だった場合は、値が割り当てられる前に返されているはずです。
コード
function getAjaxReturn()
{
var bol=false;
$.ajax({
type:"POST",
async:false,
http://www.cnblogs.com/wlmemail/ admin/" ajax/userexist.aspx",
data:"username=" vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex (vusername. id,"
このユーザー名はを使用できます。" , false)
// return true;
bol=true;
}
else
{
showtipex(vusername.id,"
gt;
ユーザーは登録されました",false);
vusername.className="bigwrong";
//return false;
}
});
return bol;
2.質問。
コード
コードをコピー コードは次のとおりです: function getAjaxReturn(success_function,fail_function)
{
var bol=false;
$.ajax({
type:"POST",
http://www.cnblogs.com/wlmemail/admin/"ajax/userexist.aspx",
data:"username= " vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"
この用户名は使用可能",false)
success_function(msg);
}
else
{
showtipex(vusername.id,"
该用户已被注册",false);
vusername.className="bigwrong";
fail_function(msg);
//return false;
}
}
});
function success_function(info)
{
//やりたいことを実行します
alert(info);
}
functionfail_function(info)
{
//やりたいことを実行します
alert(info);
}