Отправка формы AJAX (только в Firefox) - PullRequest
0 голосов
/ 30 ноября 2010

Я использую контактную форму AJAX на своем веб-сайте (www.chrisanstey.co.uk), которая не отправляется только в Firefox, но работает абсолютно нормально в любом другом браузере. Форма использует следующий файл PHP:

<?php

$to = "me@somewhere.com"; //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.
?>

, а также следующий файл javascript:

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];

        }
    }
}

Форма находится на странице Wordpress, вызывается в шаблоне с помощью следующего HTML:

<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>

Если у кого-то есть идеи или возникли подобные проблемы с AJAX, не работающим в Firefox, пожалуйста, ответьте. Любая помощь будет высоко ценится!

Ответы [ 2 ]

1 голос
/ 30 ноября 2010

Ну, ваш запрос может быть кэширован, например.Это вызывает php или нет?Этот код работает для меня в Firefox, но после того, как он сработает один раз, он должен его кешировать, чтобы он больше не вызывал его.

0 голосов
/ 30 ноября 2010

Я проверил его в Firefox, и вызов ajax работает нормально ... Не думаю, что в этом проблема ... попробуйте установить аддон Firebug на Firefox, чтобы мы могли увидеть, что за сообщение об ошибке

EDIT: если я правильно понял из вашего комментария, страница изменится, когда вы нажмете кнопку отправки, и вы не захотите этого ... если это так, просто измените атрибут onClick на кнопке отправки на этот

onClick="sendemail();return false;"

или измените отправку ввода на кнопку ввода ... потому что когда вы нажимаете на кнопку отправки, форма отправляется, даже если у вас есть событие onClick, поэтому return false должно остановить его ... это то же самое со ссылками, когда вы хотите предотвратить событие по умолчанию

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...