JQuery AJAX с ASP.NET WebMethod, возвращающий всю страницу - PullRequest
36 голосов
/ 08 декабря 2008

Я делаю несколько простых тестов (в рамках подготовки к более крупному проекту) для вызова ASP.NET WebMethod с помощью JQuery AJAX. В моем примере мой WebMethod возвращает простую строку. Однако, когда я пытаюсь вызвать его с помощью JQuery, я получаю все содержимое HTML-страницы, а не только мою строку. Чего мне не хватает?

Клиентская сторона:

$(document).ready(function ready() {
        $("#MyButton").click(function clicked(e) {
            $.post("Default.aspx/TestMethod",
                {name:"Bob"},
                function(msg) {
                    alert("Data Recieved: " + msg);
                },
                "html"
            );
        });
    });

Сторона сервера:

using System;
using System.Web.Services;

namespace JqueryAjaxText
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        [WebMethod]
        public static string TestMethod(string name)
        {
            return "The value submitted was " + name;
        }
    }
}

Ответы [ 4 ]

19 голосов
/ 08 декабря 2008

Проверьте эту ссылку. Я использовал некоторые другие его посты, чтобы успешно вызывать сервис WCF. Обязательно ознакомьтесь с соответствующими статьями:

http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/

Прочитайте статью, но по сути:

  $("#Result").click(function() {
    $.ajax({
      type: "POST",
      url: "Default.aspx/GetDate",
      data: "{}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(msg) {
        $("#Result").text(msg.d);
      }
    });
});
9 голосов
/ 08 декабря 2008

Я думаю, что я запутался с параметром "type" в команде JQuery $ .post. После разговора с некоторыми людьми кажется, что тип возврата для вызова WebMethod ДОЛЖЕН быть «json». Я пытался использовать "HTML". Однажды я сменил его на «json», и тогда все заработало как обычно. Очевидно, что метод, украшенный с помощью [WebMethod], возвращает только JSON, и вот где я зависал.

Спасибо за ваши ответы, ребята.

3 голосов
/ 08 декабря 2008

Попробуйте изменить последний параметр "html" на "текст". Этот параметр указывает тип данных, которые должны быть возвращены.

0 голосов
/ 03 февраля 2017

У меня была точно такая же проблема: WebMethod возвратил всю HTML-страницу вместо намеченных данных. Для меня решение пришло от изменения внутри ~ / App_Start / RouteConfig.cs следующей строки:

settings.AutoRedirectMode = RedirectMode.Permanent;

до

settings.AutoRedirectMode = RedirectMode.Off;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...