Сервис AJAX-запросов с веб-методом на странице ASPX - PullRequest
5 голосов
/ 23 января 2012

Я пытаюсь обслуживать запросы AJAX с помощью метода на моей странице .aspx.По какой-то причине я не получаю данные, которые мне нужны.Кто-нибудь может сказать мне, что я делаю не так?

mypage.aspx:

<%@ Page Language="VB" Title="My Page" %>
<%@ Import Namespace="System.Web.Services" %>
<%@ Import Namespace="System.Collections.Generic" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    Protected Sub Page_Load(sender As Object, e As System.EventArgs)

    End Sub

    <WebMethod()> Public Function testmethod() As Integer
        Return 5
    End Function

</script>

<html>
<!--...rest of page including mybutton and myresults-->

JQuery:

$("#mybutton").click(function() {
    $.ajax({
      type: "POST",
      url: "mypage.aspx/testmethod",
      data: "{}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(msg) {
        alert("success");
        $("#myresults").html(msg.d);
      },
      error: function(msg) {
        alert("error:" + JSON.stringify(msg));
      }
    });
});

Когда я нажимаю mybutton, я получаю предупреждение "error:", а затем весь HTMLчто говорит:

Unknown web method testmethod.
Parameter name: methodName 

Ответы [ 2 ]

12 голосов
/ 23 января 2012

Метод должен быть Shared:

<WebMethod()> Public Shared Function testmethod() As Integer
    Return 5
End Function

Кроме того, я не уверен, что методы страницы поддерживаются, когда вы не используете файл с выделенным кодом.

0 голосов
/ 23 января 2012

Что за ошибка передается обратно ?? Причина, по которой вы видите всю html-страницу, заключается в том, что в коде есть ошибка, а передаваемое сообщение - это полный html, который сообщает вам, где находится ошибка. Я уверен, что если вы исправите ошибку, то все будет в порядке.

Я не уверен, ожидаете ли вы увидеть сообщение об ошибке из кода. Помните - функции успеха или ошибки, вызываемые в разделе Ajax, вызываются в зависимости от того, был ли успешно вызван метод веб-сервиса. Я думаю, вы думаете, что вы увидите здесь сообщение об ошибке от веб-метода, но в действительности, если веб-метод выдает ошибку, у вас все равно будет успешный вызов ajax, и, таким образом, будет работать функция «успех». Функция «error» запускается только в случае сбоя всего вызова webmethod, поэтому от сервера нет ответа.

Надеюсь, что это имеет смысл.

...