ホームページ >ウェブフロントエンド >jsチュートリアル >jquery ajax return には戻り値がありません solution_jquery

jquery ajax return には戻り値がありません solution_jquery

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

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

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

function getReturnAjax{
$.ajax({
type:"POST",
url:"ajax/userexist.aspx",
data:"username=" vusername.value,
成功 :function(msg){
if(msg=="ok"){
showtipex(vusername.id,"このユーザー名は",false)
return true;
}
else
{
showtipex (vusername.id,"ユーザーは登録されました
vusername.className="bigwrong";
return false;
}
}
});
}

しかし、この getReturnAjax() を呼び出すと、取得される値は常に false であることがわかります。つまり、Firefox で firebug を使用してデバッグしても、コードが実行されないことがわかります。リターン部分はまったく。


まず関数で変数を定義し、次に ajax で代入し、最後に関数の最後で変数を返すことを想像してみましょう。コードを次のように変更します。 🎜>

コードをコピーします コードは次のとおりです。
function getAjaxReturn()
{
var bol=false;
$.ajax({
type:"POST",
url:"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,"ユーザーは登録されました
}
}
}) ;
return bol;
}


結果はまだ機能しません。最終的な解決策は次の 2 です。

1. async:false を追加します。つまり、同期に変更されます。 (同僚の説明によると、次の js は、ajax が戻り値を取得するまで実行されません。これにより、過去の多くの ajax 呼び出しでの代入が機能しなかったことが明らかになります)。このように、ajaxがbolに値を代入した後、以下のjs部分が実行されます。先ほど非同期だった場合は、値が割り当てられる前に返されているはずです。




コードをコピー コードは次のとおりです。 function getAjaxReturn()
{
var bol=false;
$.ajax({
type:"POST",
async:false,
url:"ajax/userexist.aspx",
データ:" username=" vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"このユーザー名は",false)
// return true;
bol=true;
}
else
{
showtipex(vusername.id,"<フォントの色) = '#ffff00'>ユーザーは登録されました
",false);
vusername.className="bigwrong";
//return false;
}
}
});
return bol;


2. 関数を渡してこの問題を解決します。



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

function getAjaxReturn(success_function,fail_function)
{
var bol=false;
$.ajax({
type:"POST",
url:"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);
}

オンデマンド プランを選択してください必要です。一般に、大規模な Web サイトでは、関数を渡す 2 番目の方法を使用して、成功または失敗した場合にページ プロンプトを処理します。

コードをコピーします コードは次のとおりです:
// async:false を追加します。 to sync
//ajax が bol への値の割り当てを完了するまで待ってから、次の js 部分を実行します。非同期の場合は、値を割り当てる前に返されます。
function vcodeYes() {
var bol = false;
$.ajax(
{
type: "GET",
url: "../Ajax/ValidationCode.ashx ",
data: { txtVcode: $('#').val() },
async: false,
success: function (data) {
if (data == "0") {
$.dialog({ icon: 'warning', follow: document.getElementById('txtVcode'), content: '検証コードエラー!' }).time( 1);
changeCaptchaImage('imgVerify2', 'txtVcode');
else {
}
}
return bol;
}
//検証が失敗した場合は false を返し、そうでない場合は次の関数を実行します
$('.getVodes').click(function () {
if (vcodeYes() ) {
.
});
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。