2010-12-15 7 views
0

Wenn Sie seit einiger Zeit versuchen, und dies nicht ohne Hilfe zu arbeiten.Kann Variablen mit AJAX nicht an PHP senden

Ich möchte Variablen aus einem Kontaktformular an ein PHP senden, um es an mich zu senden.

die js sieht ungefähr so ​​aus:

$("#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; 


}); 

ich die form_values2 möchte mir schicken werden, aber ich kann es nicht zu arbeiten.

Ich denke, das Hauptproblem für mich ist, dass ich nicht sicher bin, wie die PHP-Datei aussehen muss, um die form_values2 var zu senden.

das sehr einfache PHP-Testformular funktioniert nicht.

<?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"; 
} 
?> 

Vielen Dank für Ihre Hilfe.

Aaron

Antwort

2

Ein einfacher Ansatz (und Codierungsfehler vermeidet) wäre .serialize() zu verwenden, um auf die <form> so bekommt er die Daten wie ein normaler nicht-AJAX einreichen tut, wie folgt aus:

$("#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; 
}); 

Ihr zweiter Satz von Eingängen funktioniert bereits mit diesem, der erste Satz, obwohl Sie durch title finden, stellen Sie sicher, dass sie das name Attribut haben, das Sie stattdessen an den Server senden möchten. Auch nur aus Gründen der Vollständigkeit, gibt es eine noch kürzere Version mit $.post(), wie folgt aus:

$("#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

Vielen Dank für Ihre schnelle Antwort Nick. Aber ich denke, das Hauptproblem ist die PHP-Datei selbst. Ich kann es nicht richtig machen. Können Sie mir dabei helfen? – Aaron

+0

@Aaron - Ich sehe keinen PHP-Code in Ihrer Frage, können Sie es hinzufügen? –

+0

Nick das ist mein Hauptproblem :(Ich bin nicht in der Lage, eine PHP-Datei zu kodieren, die mir die Variablen "form_values2" per E-Mail schicken wird .. der obige Code ist soweit richtig, ich habe nur dot wie man die mail.php kodiert Ich die Variablen – Aaron

0

Sie benötigen Json typisierte Daten zu verwenden. Zum Beispiel:

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

Schöner Gedanke! aber mir wäre es lieber, wenn mir jemand mit dem vorhandenen code helfen könnte, indem er mir eine php-datei zeigt, die das formular per email versendet. – Aaron

Verwandte Themen