ホームページ >ウェブフロントエンド >jsチュートリアル >jquery ajax 同期および非同期実行サンプル code_jquery

jquery ajax 同期および非同期実行サンプル code_jquery

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

まず、単純な js
jquery ajax 戻り値のコードを見てみましょう

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

function getReturnAjax{
$.ajax({
type:"POST",
http://www.jb51.net/userexist.aspx",
data: "username= " vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"このユーザー名は",false)
return true;
}
else
{
showtipex(vusername.id,"ユーザーは登録済み gt;",false);
vusername.className="bigwrong";
return false;
}
}
});


しかし、getReturnAjax() を呼び出すと、結果はすべて false であることがわかります。つまり、Firefox での firebug によるデバッグでは、コードがまったく効果がないことがわかります。

関数内で変数を定義し、それを ajax で代入し、最後に関数の最後で変数を返すことを考えてみましょう。コードを次のように変更しましょう:
Code
コードをコピー コードは次のとおりです:

function getAjaxReturn()
{
var bol=false;
$.ajax({
type:"POST",
http://www.jb51.net/userexist. aspx",
data:"username= " vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"< ;img src='images/ok.gif' />このユーザー名は",false)
/を使用できます/ return true;
bol= true;
}
else
{
showtipex(vusername.id," b>ユーザーは登録されています",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. jb51.net /userexist.aspx",
data:"username=" vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex( vusername.id ,"このユーザー名はを使用できます", false )
// true を返します;
bol=true;
}
else
{
showtipex(vusername.id,"ユーザーは登録されました",false);
vusername.className="bigwrong";
//return false;
}
});
return bol;


2. .

コード


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

function getAjaxReturn(success_function,fail_function)
{
var bol=false;
$.ajax({
type:"POST",
http://www.jb51.net/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)
{
// したいことをします do
alert(info)
}

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