2010-04-09 4 views
1

j'ai la méthode postback jquery suivante sur le clientLe rappel simple de jquery fonctionne sur .net3.5 mais rien ne se déclenche sur .net 2.0?

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CallServerWithParameters.aspx.cs" Inherits="CallServerWithParameters" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 

    <script src="jquery-1.2.6.js" type="text/javascript"></script> 
      <script language="javascript"> 
      $(document).ready(function() { 
       $("#txtNoOfMales").change(function() { 
        var ticketRequired = this.value; 
        var options = { 
         type: "POST", 
         url: "CallServerWithParameters.aspx/GetAvailableTicketsForMales", 
         data: "{no:" + ticketRequired + "}", 
         contentType: "application/json; charset=utf-8", 
         dataType: "json", 
         success: function(response) { 
          if (response.d != "") { 
           alert(response.d); 
           $("#txtNoOfMales").focus(); 
          } 
         } 
        }; 
        //Call the PageMethods 
        $.ajax(options); 

       }); 

      }); 
     </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    No of Male Tickets:<asp:TextBox ID="txtNoOfMales" runat="server"></asp:TextBox> 
    </div> 
    </form> 
</body> 
</html> 

et la méthode Web suivante sur le côté serveur

using System; 
using System.Collections.Generic; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.Services; 

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

    } 
    [WebMethod] 
    public static string GetAvailableTicketsForMales(int no) 
    { 
     string result = ""; 
     int NoOfTicketsAvailable = 5; 
     if (no > NoOfTicketsAvailable) 
     { 
      result = "Only " + NoOfTicketsAvailable.ToString() + " Male ticket(s) avaialable. Please eneter a lower number!"; 
     } 
     return result; 
    } 

} 
problème

est tout fonctionne bien sur NET 3.5, mais si j'utiliser le même code sur .net 2.0 l'événement webmethod ne reçoit pas d'appel du tout, quelqu'un a une idée de ce que j'ai fait de mal?

grâce

mis à jour avec le code source complet

+0

Pouvez-vous nous donner un échantillon de la classe entière dans laquelle cette méthode web réside? Il a l'air d'avoir raison, donc il pourrait être un peu plus haut. –

+0

AJAX n'a-t-il pas besoin de WCF qui n'a été implémenté qu'à partir de la version 3.0? –

+0

Marvin: J'ai testé le code ci-dessus en appelant un webmethod sans utiliser de paramètres et ça fonctionne très bien sur .net2.0, juste que ça ne marche pas quand je commence à inclure des paramètres. Tim: je vais modifier et mettre à jour avec plus de code de détail merci – CliffC

Répondre

0

Il travaille pour ma déclaration de la méthode Web avec les attributs suivants:

[System.Web.Services.WebMethod] 
    [System.Web.Script.Services.ScriptMethod] 

Aussi j'utiliser PageMethods.GetAvailableTicketsForMales pour appeler la fonction de js.

J'espère que cela va vous aider.

Questions connexes