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
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous voulez probablement ajouter un return false; à la partie inférieure de votre méthode Submit() en JavaScript (pour qu'il cesse de le soumettre, puisque vous êtes la manipulation en AJAX).
Vous vous connectez à l' complète cas, pas la succès cas - il y a une différence importante et c'est pourquoi votre débogage résultats ne sont pas comme prévu. Aussi, je n'ai jamais fait de la signature des méthodes de correspondre à la vôtre, et j'ai toujours fourni un contentType et le type de données. Par exemple:
Cela n'a pas résolu mon problème, j'ai donc modifié légèrement les paramètres.
Ce code a fonctionné pour moi: