El método web C # no está llamando en javascript

enter image description here Creo un método web y ahora estoy llamando a esto en mi archivo de script java, pero me da un error de ruta, no es capaz de encontrar la ruta de lo que estoy dando …

El código del método web es:

[System.Web.Services.WebMethod] public static int ItemCount(string itemId) { int val = 0; Item itm = Sitecore.Context.Database.GetItem(itemId); val = itm.Children.Count; return val; } 

función de script java llamando como:

  function GetItemCount(itemId) { var funRes = ""; debugger; try { if (itemId != null) { jQuery.ajax({ cache: false, type: "POST", contentType: "application/json; charset=utf-8", url: "/Views/GetItem.aspx/ItemCount", data: { itemId: itemId }, dataType: "json", async: false, success: function (data) { funRes = data.result; }, error: function(err) { alert(err.responseText); } }); } } catch (ex) { alert(ex.message); } return funRes;} 

mientras estoy dando la ruta exacta para la clase de método C # pero no funciona, da un error en la consola, ¿alguien puede sugerirme lo que me falta aquí?

Hay pocas reglas para que ajax trabaje con asp.net.

  • Su WebMethod debe ser public y static .
  • Si su WebMethod espera que algunos parámetros que estos parámetros se pasen como data en ajax.
  • El nombre del parámetro (s) debe ser el same en WebMethod y en data parte de data de ajax.
  • Los datos pasados ​​desde ajax deben estar en json string Para esto puede usar JSON.stringify o tendrá que rodear los values de los parámetros entre quotes .

Por favor, compruebe la siguiente llamada ajax de muestra

 function CallAjax() { $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", url: "Default.aspx/CallAjax", data: JSON.stringify({ name: "Mairaj", value: "12" }), dataType: "json", async: false, success: function (data) { //your code }, error: function (err) { alert(err.responseText); } }); } [WebMethod] public static List CallAjax(string name,int value) { List list = new List(); try { list.Add("Mairaj"); list.Add("Ahmad"); list.Add("Minhas"); } catch (Exception ex) { } return list; } 

EDITAR

Si usa GET en ajax, necesita habilitar su método web para ser llamado desde la solicitud GET . Agregue [System.Web.Script.Services.ScriptMethod(UseHttpGet = true)] en la parte superior de WebMetod

 [System.Web.Services.WebMethod] [System.Web.Script.Services.ScriptMethod(UseHttpGet = true)] public static int ItemCount() 

Simplemente modifica la función javascript de la siguiente manera

  function GetItemCount(itemId) { var funRes = ""; debugger; try { if (itemId != null) { jQuery.ajax({ type: "GET", url: "/Views/GetItem.aspx", data: 'itemID=' + itemId, contentType: "application/html", dataType: "html", success: function (response) { funRes= response.result; } }); } } catch (ex) { alert(ex.message); } return funRes; }