вызов функции JavaScript типа bool - PullRequest
1 голос
/ 13 декабря 2010

Я пытаюсь вызвать метод страницы с помощью AJAX. Смотреть код

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

Метод проверки должен возвращать true / false. Код для метода валидации:

<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 голосов
/ 13 декабря 2010

Вы выполняете асинхронную операцию и все еще ожидаете, что она заблокирует ваш вызов и ждет ответа, это один из обходных путей, который я видел в прошлом, вы скрываете кнопку отправки и создаете другую кнопку, которая вызывает ваш запрос 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> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...