2009-08-25 16 views
0

関数から$ ajax呼び出しが返す値を返そうとしていますが、「未定義」しか返しません。警告がajax呼び出しからの "応答"の場合、それはrigth値を返します。偽:あなたは非同期を使用して完了するために、AJAX呼び出しを待つしない限り、あなたはこれを行うことはできませんここでのコードは、ある私が間違って何をやっている?:Jquery:呼び出し元関数のajax呼び出しの値を返しますか?

$(".insertCandidate").live("click", (function(e) { 
      var ids = this.id.toString().split("|"); 
      var tempCanID = ids[1]; 
      var canID = ids[0]; 
      var tempName = CandidateName(tempCanID); 
      var canName = CandidateName(canID); 
      //alert("HTML: "+tempName); 
      $("#mergeCandidateDialog").empty(); 
      $.blockUI({ message: $("#mergeCandidateDialog").append(
       "<div>" + tempName + "s ansøgning til vil blive lagt under den eksiterende ansøger s data.<br /><br /> Ønsker du at fortsætte?<br /><br /></div>" + 
       "<div id=\"content\">" + 
       "<input type=\"button\" id=\"" + ids + "\" class=\"insertCandidateYes\" value=\"Ja\" />" + 
       "<input type=\"button\" id=\"insertCandidateNo\" value=\"Nej\" /></div>"), css: { cursor: 'default', fontWeight: 'normal', padding: '7px', textAlign: 'left' } 
      }); 
     })); 

function CandidateName(candidateID) { 
     var returnstring; 
     $.ajax({ 
      type: "POST", 
      url: "/Admin/GetCandidateName/", 
      data: { 'candidateID': candidateID }, 
      succes: function(response) { 
       returnstring = response; 
       return; 
      }, 
      error: function(response) { 
       alert("FEJL: " + response); 
      } 
     }); 

     return returnstring; 
    } 

答えて

3

を。しかし、私はそれがブラウザをロックするので、私はこれをやりません、そして、呼び出しが失敗した場合、ユーザーはクラッシュする必要があります。あなたのスクリプトをリファクタリングし、.ajax呼び出しの成功関数内でコールバック関数を呼び出す方が良いでしょう。

type: "POST", 
    async: false, // ADD THIS 
    url: "/Admin/GetCandidateName/", 

はまた、あなたが成功した場合に「s」をオフに左:

は、あなたのアヤックスコールに非同期真の属性を追加します同様の質問here

-2
$.ajax({ 
     type: "POST", 
     url: "/Admin/GetCandidateName/", 
     data: { 'candidateID': candidateID }, 
     success: function(response) { 
      return response;//USE THIS 

      //THIS WILL RETURN FROM THE FUNCTION WITHOUT RETURNING ANY VALUE 
      //return; 
     }, 
+0

私はajax呼び出しを関数に含める必要があり、スクリプトの使用が関数内にあるときはどちらも機能しません。私はそれを試してみました。 – Poku

+0

成功関数(名前を正しく入力した場合)は、イベントの発生に応答して呼び出されます。 $ .ajax関数を呼び出した関数は呼び出されません。 (とにかく$は何ですか?私はそのパターンを認識しません。http://blog.dorward.me.uk/2009/02/19/the-dollar-function-must-die.html) – Quentin

+0

@Davidのスペル成功は質問のコードから来た。 – TheVillageIdiot

1

に私の答えを参照してください。

これは可能性があります。

+0

デフォルトでは非同期ですが、これがどのように役立つかわかりません。 – redsquare

0

同じ2つのajaxリクエストを実行しています。パフォーマンスを向上させるには、IDの配列をCandidateNameメソッドに渡す必要があります。その後、サーバーサイドスクリプトも一致する名前の配列を返す必要があります。

関連する問題