Проблема со вставкой setTimeout в скрипт
Уважаемые знатоки, прошу вашей помощи.
Есть вот такой скриптик jQuery, который позволяет загружать PHP файл без перезагрузки страницы (aJax):
<script type="text/javascript">
var req = Create();
function ge(id)
{
return document.getElementById(id);
}
function Create()
{
if(navigator.appName == "Microsoft Internet Explorer")
{
req = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
req = new XMLHttpRequest();
}
return req;
}
function Request(query)
{
req.open('post', 'modules/online_kredit_v2.php' , true );
req.onreadystatechange = Refresh;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
req.send(query);
}
function Refresh()
{
var a = req.readyState;
if( a == 4 )
{
var b = req.responseText;
document.getElementById('ajax').innerHTML = b;
}
else
{
document.getElementById('ajax').innerHTML = '<br><center>Отправка.........</center>';
}
}
/////Собераем все элементы формы которые будем отправлять
function Pusk()
{
var query;
var txt11 = encodeURIComponent(ge('tovar1').value);
var txt22 = encodeURIComponent(ge('cena1').value);
var txt33 = encodeURIComponent(ge('gorod1').value);
query = 'tovar1='+txt11+'&cena1='+txt22+'gorod1='+txt33;
Request(query);
}
</script>
Суть проблемы вот в чем, при нажатии на кнопку, скрипт будет подгружать PHP файл с информацией. Пока скрипт грузится, на экран выводится надпись "Отправка.........". Так вот, нужно сделать так, что бы эта надпись выводилась определенное кол-во времени, а только потом появлялась инфа из файла PHP. Т.е. нужно добавить setTimeout в этот кусок кода:
function Refresh()
{
var a = req.readyState;
if( a == 4 )
{
var b = req.responseText;
document.getElementById('ajax').innerHTML = b;
}
else
{
document.getElementById('ajax').innerHTML = '<br><center>Отправка.........</center>';
}
А именно, на сколько я понял в:
if( a == 4 )
{
var b = req.responseText;
document.getElementById('ajax').innerHTML = b;
}
К сожалению, мои знания в JS очень малы, а времени изучить данный вопрос нету т.к. нужно решить эту проблему очень срочно, именно по-этому я прошу вашей помощи. Заранее благодарен. |
document.getElementById('ajax').innerHTML = b;
заменить на
setTimeout(function(){ document.getElementById('ajax').innerHTML = b }, 3000);
|
почему вопросы задаете в этой ветке форума?
|
вот то что тебе нужно на ajax
<head> <link rel="stylesheet" type="text/css" media="all" href="css/style1.css"> <link rel="stylesheet" type="text/css" media="all" href="fancybox/jquery.fancybox.css"> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type="text/javascript" src="fancybox/jquery.fancybox.js?v=2.0.6"></script> </head> <body> <div id="wrapper"> <p><a class="button modalbox" href="#inline">Contact Me</a></p> </div> <div id="inline" style="display:none"> <form id="contact" name="contact" action="#" method="post"> <label for="email"><span class="required">*</span> Email</label> <input name="email" type="email" id="email" class="txt" /> <label for="comments"><span class="required">*</span> Твой комментарий</label> <textarea name="msg" id="msg"></textarea> <button id="send" class="button">Отправить</button> </form> </div> </body> </html>
function validateEmail(email) {
var reg = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return reg.test(email);
}
$(document).ready(function() {
$(".modalbox").fancybox();
$("#contact").submit(function() {
return false;
});
$("#send").on("click", function(){
var emailval = $("#email").val();
var msgval = $("#msg").val();
var msglen = msgval.length;
var mailvalid = validateEmail(emailval);
if (mailvalid == false) {
$("#email").addClass("error");
}
$("#email").change(function() {
$("#email").removeClass("error");
});
if (msglen < 4) {
$("#msg").addClass("error");
}
$("#msg").change(function() {
$("#msg").removeClass("error");
});
if (mailvalid == true && msglen >= 4) {
$("#send").replaceWith("<em>отправляется...</em>");
$.ajax({
type: 'POST',
url: 'sendmessage.php',
data: $("#contact").serialize(),
success: function(data) {
if(data == "true") {
$("#contact").fadeOut("fast", function(){
$(this).before("<p><strong>Спасибо! Ваше сообщение отправлено.</strong></p>");
setTimeout("$.fancybox.close()", 2000);
});
}
}
});
}
});
});
содержание файла sendmessage.php
<?php
$sendto = "test@yandex.ru";
$usermail = $_POST['email'];
$content = nl2br($_POST['msg']);
$subject = "Message from your site";
$headers = "From: " . strip_tags($usermail) . "\r\n";
$headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";
$msg = "<html><body style='font-family:Arial,sans-serif;'>";
$msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Message from your site</h2>\r\n";
$msg .= "<p><strong>Sent by:</strong> ".$usermail."</p>\r\n";
$msg .= "<p><strong>Message:</strong> ".$content."</p>\r\n";
$msg .= "</body></html>";
if(@mail($sendto, $subject, $msg, $headers)) {
echo "true";
} else {
echo "false";
}
?>
|
| Часовой пояс GMT +3, время: 21:53. |