2010-12-15 3 views
0

Si vous essayez depuis quelque temps maintenant et que vous ne pouvez pas obtenir ce travail sans aide. Je veux envoyer des variables d'un formulaire de contact à un php afin de l'envoyer par la poste.Impossible d'envoyer des variables avec ajax à php

les js ressemble à ceci:

$("#submitQuote").live('click',function(){ 

    var shirt_style = "shirt_style="+$(".dropdown[title=shirt_style] .dropdownValue").text(); 
    var shirt_type = "&shirt_type="+$(".dropdown[title=shirt_type] .dropdownValue").text(); 
    var cuffs = "&cuffs="+$(".dropdown[title=cuffs] .dropdownValue").text(); 
    var chestpoket = "&chestpoket="+$(".dropdown[title=chestpoket] .dropdownValue").text(); 
    var collar = "&collar="+$(".dropdown[title=collar] .dropdownValue").text(); 
    var collar_buttons = "&collar_buttons="+$(".dropdown[title=collar_buttons] .dropdownValue").text(); 
    var fastening = "&fastening="+$(".dropdown[title=fastening] .dropdownValue").text(); 
    var cut = "&cut="+escape($(".dropdown[title=cut] .dropdownValue").text()); 



    var Name = "&Name="+escape($("input[name=Name]").val()); 
    var Email = "&Email="+escape($("input[name=Email]").val()); 
    var Phonenumber = "&Phonenumber="+escape($("input[name=Phonenumber]").val()); 
    var Address = "&Address="+escape($("input[name=Address]").val()); 
    var Zipcode = "&Zipcode="+escape($("input[name=Zipcode]").val()); 
    var City_country = "&City_country="+escape($("input[name=City_country]").val()); 
    var Copy = "&Copy="+$(".checkbox[title=Copy]").hasClass("checkboxChecked"); 

    var form_values1 = shirt_style+shirt_type+cuffs+chestpoket+collar+collar_buttons+fastening+cut; 
    var form_values2 = form_values1+Name+Email+Phonenumber+Address+Zipcode+City_country+Copy; 


    $.ajax({ 
    type: "POST", 
    url: "http://www.....com/ajax/mail.php", 
    data: form_values2, 
    success: function() { 

    $('html,body').animate({scrollTop:290},1000); 
    $("#quoteStepContainer").html(''); 
    $("#quoteStepContainer").html('<img src="http://www...com/img/sent.jpg" width="625" height="160" alt="Thank you" id="thankyouimage" />'); 
    $("#thanksImage").fadeIn(1000); 
    $("#quoteStepContainer").delay(1000).animate({"height": "190px"},1500); 

    } 
    }); 

    return false; 


}); 

Je veux que le form_values2 me seront envoyés, mais je ne peux pas le faire fonctionner.

Je pense que le principal problème pour moi est que je ne sais pas comment le fichier php doit ressembler afin d'envoyer le formulaire var_values2.

le formulaire de test PHP très simple ne fonctionne pas.

<?php 
$mail = $_POST['Email']; 
$name = $_POST['Name']; 




$to = "[email protected]"; 
$message =" You received a mail from ".$mail; 
$message .=" His name is : ".$name; 

if(mail($to,$mail,$message)){ 
    echo "mail successful send"; 
} 
else{ 
    echo "there's some errors to send the mail, verify your server options"; 
} 
?> 

Merci beaucoup pour votre aide.

Aaron

Répondre

2

Une approche beaucoup plus facile (et évite les erreurs de codage) serait d'utiliser .serialize() sur le <form> il obtient les données comme un non-AJAX normale présenter le fait, comme ceci:

$("#submitQuote").live('click',function(){ 
    $.ajax({ 
    type: "POST", 
    url: "http://www.....com/ajax/mail.php", 
    data: $("#formid").serialize(), 
    success: function() {  
     $('html,body').animate({scrollTop:290},1000); 
     $("#quoteStepContainer").html('<img src="http://www...com/img/sent.jpg" width="625" height="160" alt="Thank you" />').find('img').hide().fadeIn(1000) 
         .end().delay(1000).animate({"height": "190px"},1500); 
    } 
    }); 
    return false; 
}); 

Votre deuxième ensemble d'entrées fonctionne déjà avec ceci, le premier ensemble bien que vous trouviez par title, assurez-vous qu'ils ont l'attribut name que vous voulez envoyer au serveur à la place. De plus, juste pour être complet, il y a une version encore plus courte en utilisant $.post(), comme ceci:

$("#submitQuote").live('click',function(){ 
    $.post("http://www.....com/ajax/mail.php", $("#formid").serialize(), function() {  
     $('html,body').animate({scrollTop:290},1000); 
     $("#quoteStepContainer").html('<img src="http://www...com/img/sent.jpg" width="625" height="160" alt="Thank you" />').find('img').hide().fadeIn(1000) 
         .end().delay(1000).animate({"height": "190px"},1500); 
    }); 
    return false; 
}); 
+0

Merci beaucoup pour votre réponse rapide Nick. Mais je pense que le principal problème est le fichier php lui-même. Je ne peux pas comprendre. Peux-tu m'aider avec ça? – Aaron

+0

@Aaron - Je ne vois pas de code PHP dans votre question, pouvez-vous l'ajouter? –

+0

Nick thats mon principal problème :(Je suis incapable de coder un fichier php qui va m'envoyer les variables "form_values2" le code ci-dessus est correct jusqu'à présent, je juste dot obtenir comment coder le mail.php afin d'envoyer un courriel – Aaron

0

Vous devez utiliser des données JSON typées. Par exemple:

var ajaxData = { 
    shirt_style: $(".dropdown[title=shirt_style] .dropdownValue").text(), 
    shirt_type : $(".dropdown[title=shirt_type] .dropdownValue").text() 
}; 

$.ajax({ 
    type: "POST", 
    url: "http://www.....com/ajax/mail.php", 
    data: ajaxData, 
    success: function (data) { 
     ... 
    }, 
    error: function() { 
     ... 
    } 
}); 
+0

Belle pensée! mais je préférerais que quelqu'un puisse m'aider avec le code existant en me montrant un fichier php qui envoie le formulaire. – Aaron

Questions connexes