2012-02-14 2 views
2

私はこの問題を抱えています:ファイルがまだアップロードされていないことを検証する必要があります。trueまたはfalseを返すisAlreadyUploaded()によって呼び出されたJqueryでWebサービスを使用します。ファイルが存在する場合は、続行の確認が求められます。その後、一度終了したら、Button1_Click関数を呼び出して操作を終了します。私の問題は、その両方が同時に呼び出されていることで、確認を避けることです。submitの前にasp.netボタンのクライアント側の確認

多分私は間違った方法で問題に近づいています。もしそうなら、私を修正してください。

<asp:Button ID="Button1" runat="server" Text="Upload" onclick="Button1_Click" OnClientClick="return isAlreadyUploaded()" /> 

<script> 
function isAlreadyUploaded() { 

    var mystring = ""; 

    $.ajax({ 
     type: "POST", 
     url: "Main.aspx/alreadyUploaded", 
     data: "{'swfFile':'" + $("#<%=FileUpload2.ClientID%>").val() + "','flvFile':'" + $("#<%=FileUpload3.ClientID%>").val() + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 

      mystring = msg.d; 
      alert(mystring); 
      if (mystring != "") { 

       if (confirm(mystring)) { 
        return true; 
       } else { 
        return false; 
       } 
      } else { 
       return true; 
      } 
     } 
    });   
} 
</script> 
+0

isAlreadyUploaded' ' – xandercoded

答えて

3

それはあなたが次のオプション追加した場合に動作するはずです:

$.ajax({ 
    /* ... code ...*/ 
    async : false, 
    /* ... code ...*/ 
}); 

をあなたはsynchronousリクエストを行う必要があるときには、サーバーにasynchronous要求を作っています。

http://api.jquery.com/jQuery.ajax/

+0

'async'プロパティを' false'に設定して動作させるだけでしょうか?もう一度見てみましょう。 – ShankarSangoli

+2

しました。どうもありがとうございました。 –

0

あなたが探しているかもしれないajaxツールキットにConfirmButtonExtenderがあります。ここ は、私が見つけた例です。http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ConfirmButton/ConfirmButton.aspx

+0

をJavaScriptのメソッド内のコードを投稿してくださいありがとうございますが、確認は、条件付きでなければなりません。ファイルがない場合、確認は必要ありません。 –

1

ためのAjax自然isAlreadyUploadedによって非同期でサーバーの応答を待つことはありません、あなたはisAlreadyUploadedから何かを返されていないので、それはtrueとして扱われ、ボタンがフォームを送信しますです。

ajax設定のasyncプロパティをfalseに設定すると、サーバが機能を終了する前に応答するのを待つことができます。

function isAlreadyUploaded() { 

    var mystring = "", retVal = false; 

    $.ajax({ 
     async: false 
     type: "POST", 
     url: "Main.aspx/alreadyUploaded", 
     data: "{'swfFile':'" + $("#<%=FileUpload2.ClientID%>").val() + "','flvFile':'" + $("#<%=FileUpload3.ClientID%>").val() + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 

      mystring = msg.d; 
      alert(mystring); 
      if (mystring != "") { 

       if (confirm(mystring)) { 
        retVal = true; 
       } else { 
        retVal= false; 
       } 
      } else { 
       retVal = true; 
      } 
     } 
    });  

    return retVal; 
} 
関連する問題