ホームページ  >  記事  >  ウェブフロントエンド  >  jquery ajaxの同期および非同期実行の最終的なsolution_jquery

jquery ajaxの同期および非同期実行の最終的なsolution_jquery

WBOY
WBOYオリジナル
2016-05-16 17:35:171109ブラウズ

まず、単純な 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);
}
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。