2011-05-02 4 views
0

Cette question est un peu un long shot, mais je vais essayer.jQuery ne fonctionne pas après

Je suis en train d'utiliser ajax post jQuery dans mon site asp.net, mais il ne fonctionne pas.

La version la plus simple du code que j'ai essayé était:

$("#divTest").click(function() 
{ 
     $.ajax({ type: "POST", url: "WebForm1.aspx" }); 
}); 

D'autres faits sont les suivants:

  • J'utilise asp.net 4.0 et IIS 7.5 sur Windows Server 2008.

  • Lorsque j'ai créé une nouvelle application Web et testé le même code, cela a fonctionné très bien.

  • Lors du débogage, je vis que l'événement Page_Init ne se déclenche pas à la demande comme prévu.

  • Dans Firebug, je pouvais voir qu'une demande est envoyée à la page, mais la réponse qu'elle vide (de longueur de contenu est 0).

  • Elle a testé ceci sur FF, Chrome et IE.

  • Lors du remplacement du type à "GET", il fonctionne très bien.

Ce qui pourrait être à l'origine de ce problème?

Edit:

je découvre maintenant que si je mets ValidateRequest = "false" pour la page, le problème est résolu.

Ce qui pourrait faire la demande de poste à l'échec de la validation comme il le fait apparemment? Et que peut-on faire d'autre que de définir ValidateRequest sur false?

+0

Si vous utilisez cet exemple simple, et ne sont pas envoyer des données, ne serait pas la réponse vide à chaque fois? Quelle est la réponse de WebForm1.aspx censé ressembler? –

+0

Tant que vous n'avez pas besoin de post complexe ajax Je suggère d'utiliser le court '.post de $();' – Zlatev

+0

Parce que vous n'êtes pas envoyez des messages de données, cela pourrait être en fait une requête GET. Dans l'onglet NET de FF quelle méthode voyez-vous à droite de l'URL? – Craig

Répondre

0

Je suppose que vous êtes envoi d'un formulaire, le cas échéant, vous devez envoyer les données à l'aide de la propriété des données, comme ceci:

$("#divTest").click(function() 
{ 
     var sdata = $('myform').serialize(); 
     $.ajax({ type: "POST", url: "WebForm1.aspx", data : sdata }); 
}); 

puis vérifier avec Firebug la réponse.

0

Essayez d'ajouter l'option de données ...

$("#divTest").click(function() 
{ 
    $.ajax({ 
     type: "POST", 
     url: "WebForm1.aspx", 
     data: {} 
    }); 
}); 
+0

Je crains que cela n'ait pas changé la situation. – Kuzco

+0

@Kuzco vous avez mentionné que le code fonctionne comme prévu lorsque vous créez une nouvelle application Web. Pouvez-vous confirmer qu'il n'y a pas de réécriture d'URL dans l'autre application? Si par exemple vous aviez un module de réécriture pour changer toutes les URL en minuscules (peut-être pour aider les rapports statistiques ... quelque chose que nous faisons), puis les rediriger vers la version en minuscule /webform1.aspx, cela deviendrait une requête GET et vous perdriez vos variables POST. Je fais l'hypothèse que vous n'êtes peut-être pas très familier avec l'ensemble de la demande ... désolé si ce n'est pas le cas. – Craig

+0

@Kuzco En deçà, si vous ne l'avez pas déjà fait, définissez un point d'arrêt à l'événement OnLoad de la page en question et vérifiez la valeur de this.IsPostBack et inspectez les objets this.Request.Form et this.Request.QueryString. – Craig

Questions connexes