Méthode ASP.NET jQuery Ajax Code-Behind

Je suis très nouveau développement web, mais qui ont beaucoup d'expérience dans le développement en général. J'ai une page ASP qui a un peu de champs de saisie et un bouton envoyer. Ce bouton soumettre purement appelle $.ajax, j'ai l'intention d'avoir appeler une méthode dans le fichier code-behind. Cependant, j'ai remarqué deux choses intéressantes. Tout d'abord, l'appel ajax réussit indépendamment de ce que sont les données fournies. Deuxièmement, le responseText champ est l'ensemble de la page html la source.

J'ai lu cette et d'autres articles qui pointent vers le webconfig, mais ces solutions ne semble pas résoudre mon problème.

Voici la page asp:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
    <script src="TesScript.js"></script>
    <link rel="Stylesheet" type="text/css" href="TestStyle.css" />
</head>
<body>
    <div>
        <ul class="tempList">
            <li>Name:
                <input id="nameText" type="text" />
            </li>
            <li>Attending:
                <input id="yesButton" type="radio" name="attending" />
                Yes
                <input id="noButton" type="radio" name="attending" />
                No </li>
            <li>Return Address:
                <input id="returnAddressText" type="text" />
            </li>
            <li>
                <input id="submitButton" type="button" onclick="submit()" value="Submit" />
            </li>
        </ul>
    </div>
    <ul id="errorContainer" class="errorSection" runat="server" />
    <ul id="messageContainer" class="messageSection" runat="server" />
</body>
</html>

Le code derrière:

using System;
using System.Web.Services;
using System.Web.UI;

namespace TestAspStuff
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }


        [WebMethod]
        public static string OnSubmit(string name, bool isGoing, string returnAddress)
        {
            return "it worked";
        }
    }
}

Et le JavaScript:

function submit() {

    var name = "my name";
    var isAttending = true;
    var returnAddress = "[email protected]";

    SendMail(name, isAttending, returnAddress);
}

function SendMail(person, isAttending, returnEmail) {

    var dataValue = { "name": person, "isGoing": isAttending, "returnAddress": returnEmail };

    $.ajax({
        type: "POST",
        url: "Default.aspx/OnSubmit",
        data: dataValue,
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
        },
        complete: function (jqXHR, status) {
            alert("complete: " + status + "\n\nResponse: " + jqXHR.responseText);
        }
    });

}

Maintenant, j'ai remarqué que je peux changer l'url de la propriété de tout ce que je veux et la méthode d'erreur n'est jamais appelée, et l'état est le succès, avec le responseText cours de l'ensemble de la page html. Mon webconfig a toutes les sections appropriées (y compris les htmlModule section). Je suis en train de travailler .Net 3.5. J'apprécie toute l'aide et, encore une fois, je suis vraiment nouveau sur ce donc ce qui est évident pour les autres est probablement pas évident pour moi. Et si il y a une meilleure façon de le faire (appel asp.net code-behind méthodes de JavaScript, qui est) s'il vous plaît n'hésitez pas à poster. Merci!!!

source d'informationauteur Will Custode