PageMethods не определено Исключение: не вызывает WebMethod в ASP.NET
Мой WebMethod не вызывается вызовом PageMethod в моей функции Javascript. Вот код:
РЕДАКТИРОВАТЬ Консоль говорит:
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.
}
И да, я добавил тег EnablePageMethods="true" в тег ScriptManager.
Тем не менее, я использовал два метода WebMethods на одной странице для двух разных целей (два разных имени). Может ли это быть проблемой? Я так не думаю, но что вы думаете?
3 ответа
Похоже, проблема в вашей последовательности выполнения скрипта и 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()
а потом попробуй.
Надеюсь это поможет.
У вас на странице настроен ScriptManager?
<asp:ScriptManager ID="scriptManager" runat="server" EnablePageMethods="true">
<Scripts>
<asp:ScriptReference Path="script1.js" />
</Scripts>
</asp:ScriptManager>
В случае серьезных проблем, просто дважды проверьте вызов из javascript. У меня там были PageMehods вместо PageMethods, и у меня была слепота кодирования днем в пятницу :-).