2012-04-10 11 views
1

ajaxを使用して検証を行っています。私のMVC3コントローラから呼び出されたメソッドですが、コントローラがtrueまたはfalseを返すかどうかはtrueです。警告が常に表示されます。Ajax操作が常にtrueを返す

ClientChoices/HasJobInProgress

public Boolean HasJobInProgress(int clientId) 
     { 
      return false; 
      //return _proxy.GetJobInProgress(clientId); 
     } 

Jquery.Ajax

$("#saveButton").click(function() { 
     var hasCurrentJob = 
      $.ajax({ 
      url: '@Url.Action("HasJobInProgress", "ClientChoices")/', 
      data: { id: @Model.ClientId }, 
      success: function(data){ 
       return data; 
      } 
      }); 
     if (hasCurrentJob) { 
      alert("The current clients has a job in progress. No changes can be saved until current job completes"); 
     } 
    }); 

SOLUTION

$("#saveButton").click(function() { 
      $.ajax({ 
      url: '@Url.Action("HasJobInProgress", "ClientChoices")/', 
      data: { id: '@Model.ClientId' }, 
      success: function(data){ 
       showMsg(data); 
      }, 
      cache: false 
     }); 
    }); 

    function showMsg(hasCurrentJob) { 
      if (hasCurrentJob.toString()=="True") { 
       alert("The current clients has a job in progress. No changes can be saved until current job completes"); 
      } 
    } 

答えて

3

AJAX呼び出しが非同期であり、あなたの戻りデータをvを設定しませんhasCurrentJobとなり、成功コールバックに戻ります。 dataに基づいてアラートを表示する方法については、下記をご覧ください。

$("#saveButton").click(function() { 
     //var hasCurrentJob 
      $.ajax({ 
      url: '@Url.Action("HasJobInProgress", "ClientChoices")/', 
      data: { id: @Model.ClientId }, 
      success: function(data){ 
       showMsg(data); 
      } 
      }); 

    }); 

    function showMsg(hasCurrentJob) { 
      if (hasCurrentJob === 'true') { 
       alert("The current clients has a job in progress. No changes can be saved until current job completes"); 
      } 
    } 
+0

これはまったく動作していないようです。どちらの状態でもアラートは表示されません。 –

+0

@atbyrdスクリプトエラーが表示されますか? showMsg関数内に警告を設定し、呼び出されているかどうかを確認できますか?また、返される値を確認する 'alert(data)'もあります。 –

+0

リビルドして強制的にリロードすると動作します。以前と同じ結果が得られました。 –

関連する問題