2016-12-01 4 views
0

Я использую visual studio 2015, а мой проект - веб-приложение ASP.NET. используя шаблон веб-формы.Как вызвать веб-метод из jQuery ajax?

Я не могу назвать WebMethod из JQuery AJAX

Вот мой Webform ASPX

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="EquipmentSubmitter.WebForm2" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     function ShowCurrentTime() { 
      $.ajax({ 
       type: "POST", 
       url: "WebForm2.aspx/GetCurrentTime", 
       data: '{name: "' + $("#<%=txtUserName.ClientID%>")[0].value + '" }', 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: OnSuccess, 
       failure: function (response) { 
        alert(response.d); 
       } 
      }); 
     } 
     function OnSuccess(response) { 
      alert(response.d); 
     } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div> 
      Your Name : 
      <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox> 
      <input id="btnGetTime" type="button" value="Show Current Time" 
       onclick="ShowCurrentTime()" /> 
     </div> 
    </form> 
</body> 
</html> 

А вот мой Webform aspx.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace EquipmentSubmitter 
{ 
    public partial class WebForm2 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     [System.Web.Services.WebMethod] 
     public static string GetCurrentTime(string name) 
     { 
      return "Hello " + name + Environment.NewLine + "The Current Time is: " 
       + DateTime.Now.ToString(); 
     } 
    } 
} 

данную контрольную точку внутри webmethod никогда не достигается.

Есть ли что-нибудь в BundleConfig.cs или где-нибудь еще?

+0

Вы можете попробовать 'URL: "WebForm2/GetCurrentTime"'? Вам не нужно использовать .aspx. – mrogers

+0

Определение 'data:' в вашем вызове ajax отображается некорректно. 'data: {name: $ (" # txtUserName "). val()}' – Steve

+0

К сожалению, ни одно из предложений не было выполнено – Baso

ответ

0

Ваш веб-метод является GET и вы отправляете data - data предназначен для методов POST. Измените свой URL на:

url: "WebForm2.aspx/GetCurrentTime?name=" + $("#<%=txtUserName.ClientID%>")[0].value 
+0

Я попробовал ваше предложение, но без помощи. – Baso

0

Я нашел ответ на вопрос.

в файле RouteConfig.cs Я изменил эту линию

settings.AutoRedirectMode = RedirectMode.Permenant; 

Для этого

settings.AutoRedirectMode = RedirectMode.Off;