2015-06-01 4 views
1

Мой WebMethod не вызывается вызовом PageMethod в моей функции Javascript. Вот код:PageMethods не определен Exception: не вызывает WebMethod в ASP.NET

EDIT Консоль говорит:

Uncaught ReferenceError: PageMethods is not defined 

JS:

function profilefollowbuttonchange(cn) { 
     if (cn.className == "profile-page-owner-follow-button") { 
       cn.className = "profile-page-owner-follow-button-active"; 
       alert("camefollow"); 
       PageMethods.ToggleFollow("follow", onSuccess, onFailure); //Does not trigger 
       alert("camefollow"); //Doesn't get printed 
      } 

      else { 
       cn.className = "profile-page-owner-follow-button"; 
       alert("cameunfollow"); 
       PageMethods.ToggleFollow("unfollow", onSuccess, onFailure); //Does not trigger 
       alert("cameunfollow"); //Doesn't get printed 
      } 
    } 

function onSuccess() { 
} 

function onFailure() { 
} 

C#:

[WebMethod] 
public static void ToggleFollow(string command) 
{ 
     //Does not reach this point. 
} 

И да, я добавил в тег ScriptManager EnablePageMethods = "true".

Однако, я использовал два WebMethods на одной странице для двух разных целей (два разных имени). Это может быть проблема? Я так не думаю, но что ты думаешь?

+0

Пробная отладка и проверка контрольной точки? Кроме того, поставьте отладчик в свой скрипт и проверьте в своей консоли на наличие ошибок. Покажи их здесь. –

+0

Почему бы не сделать это с помощью ajax-звонка? .. если он не работает так – AkshayJ

+0

@HarveySpecter О консоль говорит: «Uncaught ReferenceError: PageMethods не определен». Почему это? – Dinuka

ответ

0

Похоже, проблема связана с вашей последовательностью выполнения сценария и ScriptManager. Это означает, что для того, чтобы убедиться, что код PageMethods распознан кодом Javascript, сначала необходимо загрузить ScriptManager, а затем запустить функцию Javascript. Поэтому в моей логике здесь требуется простое изменение. Вам нужно использовать $(document).ready() здесь, в вашем скрипте, чтобы убедиться, что ScriptManager сначала в DOM, а затем ваш сценарий уволен. Что-то вроде этого должно помочь здесь.

$(document).ready(function() { 
function profilefollowbuttonchange(cn) { 
     if (cn.className == "profile-page-owner-follow-button") { 
       cn.className = "profile-page-owner-follow-button-active"; 
       alert("camefollow"); 
       PageMethods.ToggleFollow("follow", onSuccess, onFailure); //Does not trigger 
       alert("camefollow"); //Doesn't get printed 
      } 

      else { 
       cn.className = "profile-page-owner-follow-button"; 
       alert("cameunfollow"); 
       PageMethods.ToggleFollow("unfollow", onSuccess, onFailure); //Does not trigger 
       alert("cameunfollow"); //Doesn't get printed 
      } 
    } 

function onSuccess() { 
} 

function onFailure() { 
} 
}); 

Просто обернуть код сценария с $(document).ready(), а затем попробовать.

Надеюсь, это поможет.

+0

Спасибо за то, что вы заняли время, но кнопка стала нефункциональной и не достигла первого предупреждения:/ – Dinuka

+0

Любые сообщения, появляющиеся на консоли для этого? –

+0

Uncaught ReferenceError: $ не определен – Dinuka

0

У вас есть ScriptManager настроен на вашей странице?

<asp:ScriptManager ID="scriptManager" runat="server" EnablePageMethods="true"> 
    <Scripts> 
     <asp:ScriptReference Path="script1.js" /> 
    </Scripts> 
</asp:ScriptManager> 
+0

Спасибо за ответ, но, к сожалению, он не решает проблему. В нем говорится: «Неисповеданный ReferenceError: PageMethods не определен» в консоли, хотя – Dinuka