Il metodo Web di C # non sta chiamando javascript

immettere qui la descrizione dell'immagine creo un metodo web e adesso sto chiamando questo nel mio file di script java, ma dà un errore di path, non è in grado di trovare il path che sto dando ..

Il codice metodo Web è:

[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; } 

java script che chiama come:

  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;} 

mentre sto dando il path esatto per la class di metodo C # ma non funziona dare un errore sulla console, chiunque può suggerire quello che mi manca qui ..

Ci sono poche regole per ajax per lavorare con asp.net.

  • Il tuo WebMethod dovrebbe essere public e static .
  • Se il WebMethod prevede che alcuni parametri di questi parametri siano passati come data in ajax.
  • Il nome del parametro deve essere lo same in WebMethod e nella parte di data di ajax.
  • I dati passati da ajax dovrebbero essere nella json string . Per questo è ansible utilizzare JSON.stringify o dovrai circondare i values dei parametri nelle quotes .

Si prega di controllare la chiamata ajax di esempio riportta di seguito

 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<string> CallAjax(string name,int value) { List<string> list = new List<string>(); try { list.Add("Mairaj"); list.Add("Ahmad"); list.Add("Minhas"); } catch (Exception ex) { } return list; } 

EDIT

Se utilizzi GET in ajax di quello che devi triggersre il tuo metodo web da call dalla richiesta GET . Aggiungi [System.Web.Script.Services.ScriptMethod(UseHttpGet = true)] in cima a WebMetod

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

Basta modificare la function javascript come sotto

  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; }