2010-11-17 24 views
1

J'ai essayé d'accéder à un WebMethod .NET de jQuery AJAX mais je ne peux pas l'obtenir pour fonctionner. J'ai lu tout ce que je peux trouver sur SO et d'autres sites et rien ne semble fonctionner.AJAX WebMethod help

Mon code C# est telle

[WebMethod] 
public static string TestAjax() 
{ 
    return "Hello World"; 
} 

et le code JavaScript est

$.ajax({ 
    type: "POST", 
    url: "ManageEvent.aspx/TestAjax", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) 
    { 
     alert(msg.d); 
    }, 
    error: function(result) 
    { 
     alert("error: " + result.status); 
    } 
}); 

L'objectif final était de faire une soumission de formulaire à la base de données en utilisant AJAX sans recharger la page entière, mais à la moment je ne peux même pas l'obtenir pour revenir une chaîne. Lorsque je clique sur le bouton d'entrée auquel ce code est attaché, le code d'erreur est appelé donnant un statut de 12030. Mais quand je teste le code en dehors de Visual Studio, j'ai toujours une erreur mais avec un statut de 200. Y a-t-il quelque chose de code qui provoquerait cette erreur?

Merci une tonne

EDIT:

J'ai obtenu le WebMethod au travail en utilisant ScriptManager d'ASP.NET Ajax en installant ASP.NET AJAX 1.0 et d'appeler dans mon Javascript

PageMethods.TextAjax(OnSuccess, OnFail); 

où OnSuccess et OnFail sont les fonctions. Cependant, je ne peux toujours pas faire fonctionner AJAX de jQuery. Il jette toujours le statut d'erreur 12030.

+0

peut vous montrer votre web.config? vous pouvez manquer des valeurs – Anthony

Répondre

0

Le service Web a été manque une balise [ScriptService] lequel il fixe après l'installation d'ASP.NET AJAX

1

Je ne vois rien de mal avec votre code. Installez FireBug et voyez où se trouve le problème avec votre configuration. Voici un exemple de travail complet:

<%@ Page Language="C#" %> 
<%@ Import Namespace="System.Web.Services" %> 

<script type="text/C#" runat="server"> 
    [WebMethod] 
    public static string TestAjax() 
    { 
     return "Hello World"; 
    } 
</script> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head id="Head1" runat="server"> 
    <title></title> 
    <script type="text/javascript" src="scripts/jquery-1.4.1.js"></script> 
    <script type="text/javascript"> 
     $.ajax({ 
      type: "POST", 
      url: "Default.aspx/TestAjax", 
      data: "{}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 
       alert(msg.d); 
      }, 
      error: function (result) { 
       alert("error: " + result.status); 
      } 
     }); 
    </script> 
</head> 
<body> 
    <form id="Form1" runat="server"> 
    </form> 
</body> 
</html> 
+0

lorsque je cours cela en VS Je reçois le "error: 12030" comme avant. Cela m'amène à croire que cela pourrait être un problème de configuration. Y a-t-il quelque chose de spécial à faire dans le fichier web.config pour que ce type d'Ajax fonctionne? J'ai Ajax travailler ailleurs sous la forme de gestionnaires ashx mais la fonctionnalité que je vais ici serait mieux dans les méthodes de la page. – rpf3

+0

En utilisant la console JS dans Chrome, j'ai remarqué que si je supprime json contentType et dataType, la réponse est la page Default.aspx entière, pas la page d'où j'appelle le JS. – rpf3

0

Tout semble correct. Est-ce que votre classe ressemble à ceci:

public partial class _Default : Page 
{ 
[WebMethod] 
public static string TestAjax() 
{ 
    return "Hello World"; 
} 

} 
+0

plus ou moins, l'en-tête est "public partial class ManageEvent: System.Web.UI.Page" – rpf3

+0

Je chercherais ailleurs alors. Avez-vous encore quelque chose à travailler? – wajiw

+0

Pas encore. Même lorsque j'utilise le débogueur, je mets un point d'arrêt sur la méthode C# et cela ne semble jamais arriver. – rpf3