37 votes

Jquery AJAX avec ASP.NET WebMethod retournant la page entière

Je fais quelques tests simples (en préparation d'un projet plus important) pour appeler une WebMethod ASP.NET en utilisant JQuery AJAX. Dans mon exemple, ma méthode Web renvoie une simple chaîne de caractères. Cependant, lorsque j'essaie de l'appeler à l'aide de JQuery, j'obtiens le contenu entier de la page HTML au lieu de la simple chaîne. Que me manque-t-il ?

Côté client :

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

Côté serveur :

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

20voto

JoshBerke Points 34238

Regardez ce lien. J'ai utilisé certains de ses autres posts pour appeler un service WCF avec succès. Soyez sûr de vérifier les articles liés :

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

J'ai lu l'article mais c'est essentiellement :

$(document).ready(function() {
  $("#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);
      }
    });

9voto

Dana Points 842

Je pense que je me suis embrouillé avec le paramètre "type" dans la commande $.post de JQuery. Après avoir parlé à quelques personnes, il semble que le type de retour pour appeler un WebMethod DOIT être "json". J'essayais d'utiliser "html". Une fois que je l'ai changé en "json", tout a fonctionné normalement. Apparemment, une méthode décorée avec [WebMethod] ne renvoie que JSON, et c'est là que se situe mon problème.

Merci pour vos réponses.

3voto

rajesh pillai Points 5180

Essayez de remplacer le dernier paramètre "html" par "text". Ce paramètre spécifie le type de données à renvoyer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X