2011-11-13 6 views
0

Je dois utiliser <base href="http://www.mysite.com/it/"/> sur mon site parce que j'utilise apache mod_rewrite, qui pose des problèmes si je ne mets pas la balise href de base.jQuery POST problème avec base href

Mais le problème est maintenant à venir avec cette fonction jQuery:

$(document).ready(function(){ 
    $("#submit_newsletter").click(function(){          
     var hasError = false; 
     var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 

      var nameVal = $("#name").val(); 
     if(nameVal == '') { 
         $("#name").addClass("highlightError").delay(4000).queue(function(){ 
     $(this).removeClass("highlightError"); 
     $(this).dequeue(); 
    }); 
     hasError = true; 
       } 

       var subnameVal = $("#subname").val(); 
     if(subnameVal == '') { 
         $("#subname").addClass("highlightError").delay(4000).queue(function(){ 
     $(this).removeClass("highlightError"); 
     $(this).dequeue(); 
    }); 
      hasError = true; 
     } 


     var emailVal = $("#email").val(); 
     if(emailVal == '') { 
      $("#email").addClass("highlightError").delay(4000).queue(function(){ 
     $(this).removeClass("highlightError"); 
     $(this).dequeue(); 
    }); 

    hasError = true; 
     } else if(!emailReg.test(emailVal)) { 
         $("#email").addClass("highlightError").delay(4000).queue(function(){ 
     $(this).removeClass("highlightError"); 
     $(this).dequeue(); 
    }); 
     hasError = true; 
     } 


     var messageVal = $("#message").val(); 
     if(messageVal == '') { 
         $("#message").addClass("highlightError").delay(4000).queue(function(){ 
     $(this).removeClass("highlightError"); 
     $(this).dequeue(); 
    }); 

      hasError = true; 
     } 



     if(hasError == false) { 
      $.post("mail.php", 
       { name: nameVal, subname: subnameVal, email: emailVal, message: messageVal }, 
        function(data){ 
         $("#results").text("Messaggio Inviato.").delay(4000).queue(function(){ 
     $("#results").text("") 
     $(this).dequeue(); 
    }); 

               $('#newsletter')[0].reset(); 

        } 
       ); 
     } 

     return false; 
    });  

}); 

Lorsque je supprime la base balise href, il fonctionne très bien, quand je l'utilise (et je le répète, je dois l'utiliser) ci-dessus La fonction jQuery s'arrête pour fonctionner. Il ne donne aucune erreur, il ne transmet aucune valeur au fichier mail.php et ne renvoie aucun résultat.

Comment puis-je résoudre ce problème jQuery avec la balise href de base?

Merci.

Répondre

2

Je pense que vous ne réécrivez pas votre chaîne de requête dans la réécriture. L'URL sera quelque chose maintenant, puisque le type par défaut de jQuery $ est de la méthode GET:

mysiste.com/it/?param1=value1 

Vous utilisez le type: « post » dans jQuery ne pas utiliser la chaîne de requête.

Le RewriteRule si vous voulez garder votre méthode GET devrait être quelque chose comme ceci:

RewriteRule ^/it/$ /mail.php [QSA,L] 
+0

Merci. Tout fonctionne, mais pas ce $ ("# resultats"). Text ("Messaggio Inviato."). Delay (4000) .queue (function() { $ ("# results"). Text ("") $ (this) .dequeue(); }); –