2010-11-30 9 views
0

J'ai un formulaire de contact AJAX sur mon site Web (www.chrisanstey.co.uk), qui n'est pas soumis uniquement dans Firefox, mais fonctionne parfaitement bien dans tous les autres navigateurs. Le formulaire est utilise le fichier PHP suivant:AJAX Formulaire de soumission (Uniquement sur Firefox)

<?php 

$to = "[email protected]"; //This is the email address you want to send the email to 

if(!isset($_GET['action'])) 
{ 
die("You must not access this page directly!"); //Just to stop people from visiting contact.php normally 
} 

/* Now lets trim up the input before sending it */ 

$name = trim($_GET['name']); //The senders name 
$email = trim($_GET['email']); //The senders email address 
$subject = "A message sent from " . $name . " on Chris Anstey's portfolio"; //The senders subject 
$message = trim($_GET['msg']); //The senders message 

mail($to,$subject,$message,"From: ".$email.""); //a very simple send 

echo 'contactarea|<p>Thank you '.$name.' for your message, I will reply to you as soon as I can.</p>'; //now lets update the "contactarea" div on the contact.html page. The contactarea| tell's the javascript which div to update. 
?> 

et aussi le fichier javascript suivant:

function createRequestObject() { 
    var ro; 
    var browser = navigator.appName; 
    if(browser == "Microsoft Internet Explorer"){ 
     ro = new ActiveXObject("Microsoft.XMLHTTP"); 
    }else{ 
     ro = new XMLHttpRequest(); 
    } 
    return ro; 
} 

var http = createRequestObject(); 

function sendemail() { 
var msg = document.contactform.msg.value; 
var name = document.contactform.name.value; 
var email = document.contactform.email.value; 
document.contactform.send.disabled=true; 
document.contactform.send.value='Sending....'; 

    http.open('get', 'contact.php?msg='+msg+'&name='+name+'&email='+email+'&action=send'); 
    http.onreadystatechange = handleResponse; 
    http.send(null); 
} 

function handleResponse() { 
    if(http.readyState == 4){ 
     var response = http.responseText; 
     var update = new Array(); 

     if(response.indexOf('|' != -1)) { 
      update = response.split('|'); 
      document.getElementById(update[0]).innerHTML = update[1]; 

     } 
    } 
} 

Le formulaire est dans une page Wordpress, être appelé sur le modèle par le code HTML suivant:

<div id="contactarea"> 
<form name="contactform" id="contactform"> 
<p>Full Name:<br /> 
    <span class="wpcf7-form-control-wrap your-name"><input type="text" name="name"></span></p> 
<p>Email:<br /> 
    <span class="wpcf7-form-control-wrap your-email"><input type="text" name="email"></span></p> 
<p>Message:<br /> 
    <span class="wpcf7-form-control-wrap your-message"><textarea name="msg" rows="6" id="textarea"></textarea></span></p> 
<p><input type="submit" value="Send Email" name="send" id="submitbutton" onClick="sendemail();"></p> 
</form> 
</div> 

Si quelqu'un a une idée ou a rencontré des problèmes similaires avec AJAX ne fonctionne pas dans Firefox, s'il vous plaît pourriez-vous répondre. Toute aide serait très appréciée!

Répondre

1

Eh bien, votre requête pourrait être mise en cache, pour un. Est-ce qu'il appelle le php, ou pas? Ce code fonctionne pour moi dans firefox, mais après qu'il fonctionne une fois, il devrait le mettre en cache, donc il ne l'appellera plus.

+0

Lorsque le formulaire soumet il devrait m'envoyer un email avec le contenu de ce que l'utilisateur a entré dans le formulaire, puis leur donner un petit message pour leur faire savoir que le formulaire a traversé. Quand je le teste, l'URL change (ce qui ne devrait pas être le cas) pour afficher la requête PHP et l'email n'est pas envoyé. Des idées? –

+0

Oh ok, allez, alors ne mettez pas vos entrées à l'intérieur d'un formulaire, et vous serez mis. sortez les étiquettes de formulaire. Aussi, vous devriez changer votre 'input type =" submit "' 's en' input type = "bouton" '' s – Rahly

0

je l'ai testé dans Firefox et l'appel ajax fonctionne très bien ... Je ne pense pas que c'est le problème .. Essayez d'installer addon Firebug sur Firefox afin que nous puissions voir ce qui est le message d'erreur

EDIT: si je comprends bien de votre commentaire, la page change lorsque vous cliquez sur le bouton envoyer, et vous ne voulez pas que ... si c'est, alors il suffit de changer l'attribut onClick sur votre bouton soumettre à cette

onClick="sendemail();return false;" 

ou modifiez votre entrée soumise à une entrée bu tton ... c'est parce que lorsque vous cliquez sur un bouton submit, le formulaire est envoyé même si vous avez un événement onClick, donc le return false devrait l'arrêter ... c'est pareil avec les liens quand vous voulez empêcher l'évènement par défaut

Bonne chance