Проблема со вставкой 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, время: 02:45. |