2016-08-18 3 views
2

Я попытался отладить следующую ошибку в течение нескольких часов без решения (я хочу разбить клавиатуру пополам). Пожалуйста помоги. Мне это нужно.Функция JavaScript ASP.NET undefined

Unhandled exception at line 90, column 95 in http://localhost:51770/SimpleAjax.aspx

0x800a1391 - JavaScript runtime error: 'callAjaxMethod' is undefined

Этот метод вызывается с помощью кнопки на странице:

<asp:Button ID="btnCalculate" runat="server" Text="Calculate" OnClientClick="callAjaxMethod()"/> 

The JS:

function callAjaxMethod() 
{ 

    // e.preventDefault(); 

    $.ajax({ 
     type: "POST", 
     url: "SimpleAjax.asmx/IsLeapYear", 
     data: '{year: "' + $("#<%=txtYear.ClientID%>").val() + '" }', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
      if (response.d) { 
       $('#<%=txtResult.ClientID%>').val('Leap Year'); 
      } 
      else { 
       $('#<%=txtResult.ClientID%>').val('Not a Leap Year'); 
      } 
     }, 
     failure: function (response) { 
      $('#<%=txtResult.ClientID%>').val("Error in calling Ajax:" + response.d); 
     } 
    }); 
} 

кода из файла ASMX:

/// Summary description for SimpleAjax 
    /// </summary> 
    [WebService(Namespace = "http://automatedpumpcontroller.somee.com/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [System.ComponentModel.ToolboxItem(false)] 
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService] 
    public class SimpleAjax : System.Web.Services.WebService 
    { 

     [WebMethod] 
     [System.Web.Script.Services.ScriptMethod()] 

     public static bool IsLeapYear(int year) 
     { 
      return DateTime.IsLeapYear(year); 
     } 
    } 
} 
+0

Есть ли другие Javascript код внутри 'script' блок? Иногда функция не определена из-за проблемы в другой части клиентского кода. – ConnorsFan

+0

Как проверить, что в VS 2015? –

+0

Если 'callAjaxMethod' находится внутри блока' script', есть ли другой код внутри того же блока? – ConnorsFan

ответ

0

Если ваша функция callAjaxMethod находится в отдельном файле js, вам необходимо включить этот файл на свою страницу, как показано ниже

например. Js файл с именем хранится на JS \ app.js и ваша страница SimpleAjax.aspx

затем на SimpleAjax.aspx вам нужно добавить тег сценария в голове

<script src="js\app.js"></script> 
+0

Получил эту работу, добавив скрипт в главную страницу страницы. Однако теперь получите эту ошибку. Необработанное исключение в строке 1864, столбец 2 в http: // localhost: 51770/Scripts/jquery-1.10.2.js 0x800a139e - Ошибка выполнения JavaScript: ошибка синтаксиса, нераспознанное выражение: # <% = txtYear.ClientID%> –

+0

да, это должно быть потому, что вы не можете использовать тег сервера asp в файле js <%= %>, его можно использовать на самой странице aspx. Для этого вам нужно включить свою функцию на свою страницу aspx, или вам нужно заменить селектор, который использует тег сервера с помощью селектора jquery, как этот ** $ ("[id $ = 'txtYear']") ** –

0

Я думаю, что ваш вопрос с ссылка JS. Вы включили JS?

function callAjaxMethod() { 
 
    alert('in'); 
 
}

 
<input type="button" id="btn" onclick="callAjaxMethod();" />

+0

Добавлено ссылка в мастер. Теперь получите эту ошибку: Необработанное исключение в строке 1864, столбец 2 в http: // localhost: 51770/Scripts/jquery-1.10.2.js 0x800a139e - Ошибка выполнения JavaScript: ошибка синтаксиса, нераспознанное выражение: # <% = txtYear .ClientID%> –

+0

$ ("# <% = txtYear.ClientID%>"). Val(), что вы получаете здесь? –

+0

Год, который находится в текстовом поле –

Смежные вопросы