2015-01-13 9 views
0

enter image description here Я создаю веб-метод, и теперь я вызываю это в своем файле java-скрипта, но он дает ошибку пути, он не может найти путь к тому, что я даю.C# Веб-метод не звонит в javascript

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

ява вызова вроде как:

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

в то время как я даю точный путь для класса C# метод, но он не работает дать ошибку на минусы ole, может кто-нибудь предложить мне, что мне здесь не хватает.

+0

удалить первый слэш (/) от пути URL-адреса для AJAX и попробовать –

+0

пытались, не решить мой вопрос –

+0

вида папки в папке sitecore и что? –

ответ

10

Существует несколько правил для ajax для работы с asp.net.

  • Ваш WebMethod должен быть public и static.
  • Если ваш WebMethod ожидает, что некоторые параметры (параметры) должны быть переданы как data в ajax.
  • Наименование параметра (-ов) должно быть same в WebMethod и в data часть ajax.
  • Данные, переданные с ajax, должны быть в json string. Для этого вы можете использовать JSON.stringify, или вам необходимо будет окружить values параметров (ов) в quotes.

Пожалуйста, проверьте ниже пример Ajax вызова

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

Если вы используете GET в AJAX, чем нужно для того, чтобы ваш WebMethod быть вызван из GET запроса. Добавить [System.Web.Script.Services.ScriptMethod(UseHttpGet = true)] на вершине WebMetod

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

моя веб-страница внутри папки то мне нужно добавить его на меня в URL-адресе или нет –

+0

Нет, он находит страницу, но вам нужно сделать WebMethod статическим. – Mairaj

+0

Я получаю ту же ошибку, пока я изменил метод на Static –

0

Просто измените яваскрипт функцию, как показано ниже

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; 
} 
Смежные вопросы