jquery.ajax не работает для кнопки asp: - PullRequest
0 голосов
/ 21 августа 2011

Я использую следующий код для получения времени с сервера.

Функция btnNoP .click возвращает правильное время, однако кнопка asp: возвращает предупреждение об ошибке на странице.

Как я могу успешно вызвать веб-метод из документа. Уже при нажатии кнопки asp:?

  1. <script type="text/javascript">
    
    function PageMethod(fn, paramArray, successFn, errorFn) 
                { 
                    var pagePath = window.location.pathname; 
                    //Create list of parameters in the form : {"paramName1":"paramValue1","paramName2":"paramValue2"} 
                    var paramList = ''; 
                    if (paramArray.length > 0) 
                    { 
                        for (var i=0; i<paramArray.length; i+=2) 
                        { 
                            if (paramList.length > 0)
                                paramList += ','; 
                            paramList += '"' + paramArray[i] + '":"' + paramArray[i+1] + '"'; 
                        } 
                    } 
                    paramList = '{' + paramList + '}';
                    alert(pagePath + "/" + fn);
                    //Call the page method 
                    $.ajax({ 
                        type: "POST", 
                        url: pagePath + "/" + fn, 
                        contentType: "application/json; charset=utf-8", 
                        data: paramList, 
                        dataType: "json", 
                        success: successFn, 
                        error: errorFn 
                    });
                } 
    
    
                function AjaxSucceeded (result)
                {
                    alert(result.d);
                    //$("#Result").text("Result : " + result.d);
                }
                function AjaxFailed (result)
                {
                    alert("Error on Page");
                }
    
    
    
    
                $(document).ready(function() {
                    $('#btnNoP').click(function() {
                        PageMethod("GetTime", [], AjaxSucceeded, AjaxFailed);
                    });
    
                    $('#btnNoParams').click(function() {
                        PageMethod("GetTime", [], AjaxSucceeded, AjaxFailed);
                    });             
    
    
    
                });
    
    </script>
    
  2. <asp:ScriptManager ID="sm" EnablePageMethods="true" EnablePartialRendering="true" runat="server"></asp:ScriptManager>
    
    <asp:Button ID="btnNoParams" Text="Get Time" runat="server"  />
    <input type="button" id="btnNoP" />
    
  3. [WebMethod(true)]    
    public static string GetTime() {
        return "You called at : " + DateTime.Now.ToShortDateString() + "-" + DateTime.Now.ToShortTimeString();
    }
    

1 Ответ

0 голосов
/ 21 августа 2011

измените код, как показано ниже.

$('#btnNoParams').click(function() {
   PageMethod("GetTime", [], AjaxSucceeded, AjaxFailed);
   return false;
});

или

следующая ссылка может быть полезной

http://cmsnsoftware.blogspot.com/2011/01/how-to-call-csharp-function-in-ajax.html

Редактировать: - если вы используете jQuery ajax, вам не нужно добавлять диспетчер скриптов на своей странице.А если вы добавляете менеджер скриптов на страницу, вы можете напрямую вызывать веб-метод без jQuery.см. ссылку выше, в которой описано, как получить доступ к веб-методу с использованием JavaScript, jQuery и asp.net ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...