调用bool类型的javascript函数

时间:2010-12-13 11:42:02

标签: javascript asp.net ajax

我正在尝试使用AJAX调用Page方法。 见代码

<asp:Button ID="btn_upload" runat="server" CssClass="btnEffects" Text="Upload" 
        onclick="btn_upload_Click" OnClientClick="return Validate();" /> 

Validate方法应该返回true / false。 Validate方法的代码是

<script language="javascript">

function Validate()
{   
   var filename = $get('<%= txt_filename.ClientID %>').value;
   PageMethods.IsValidFile(filename,OnSuccess, OnFailure); 
  // IsValidFile is a Page Method of bool return type
}

function OnSuccess(result) 
{
   if ( !result)
   {     
     alert('File '+ $get('<%= txt_filename.ClientID %>').value + ' does not exist');
     return false;
   }
   else
   {      
    return true;
   }
}
function OnFailure(error) 
{   
}
</script>

我的问题是即使在显示警告'文件somefilename不存在'之后。 整个页面反映(即回发发生)

1 个答案:

答案 0 :(得分:0)

您正在运行异步操作并且仍然期望它阻止您的呼叫并等待响应,这是我过去看到的一种解决方法,您隐藏了提交按钮并创建了另一个调用您的ajax请求的按钮,在此请求的成功中,您单击隐藏按钮,如下所示:

<asp:Button ID="btn_upload_dummy" runat="server" CssClass="btnEffects" Text="Upload"          OnClientClick="Validate();" />  


<asp:Button ID="btn_upload" runat="server" CssClass="btnEffects" style='display:none;' Text="Upload"          onclick="btn_upload_Click"  />  


<script language="javascript">  
function Validate() 
{       
    var filename = $get('<%=txt_filename.ClientID %>').value;    
    PageMethods.IsValidFile(filename,OnSuccess, OnFailure);    
    // IsValidFile is a Page Method of bool return type 
}  

function OnSuccess(result)  
{
    if ( !result)    
    {           
         alert('File '+ $get('<%=txt_filename.ClientID %>').value + ' does not exist');      
         return false;    
     }        
     else    
    {           
        var btn = $get('<%btn_upload.ClientID');
        var clicker = btn.click ? btn.click : btn.onclick;
        clicker();    
    } 
} 


</script>