Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.03.2013, 19:26
Интересующийся
Отправить личное сообщение для MasterDmx Посмотреть профиль Найти все сообщения от MasterDmx
 
Регистрация: 16.02.2013
Сообщений: 21

Проблема со вставкой 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 очень малы, а времени изучить данный вопрос нету т.к. нужно решить эту проблему очень срочно, именно по-этому я прошу вашей помощи.
Заранее благодарен.
Ответить с цитированием
  #2 (permalink)  
Старый 02.03.2013, 02:17
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

document.getElementById('ajax').innerHTML = b;

заменить на
setTimeout(function(){ document.getElementById('ajax').innerHTML = b }, 3000);
Ответить с цитированием
  #3 (permalink)  
Старый 02.03.2013, 17:36
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

почему вопросы задаете в этой ветке форума?
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #4 (permalink)  
Старый 13.06.2013, 01:37
Интересующийся
Отправить личное сообщение для Luckas147 Посмотреть профиль Найти все сообщения от Luckas147
 
Регистрация: 11.06.2013
Сообщений: 10

вот то что тебе нужно на 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";
}
?>

Последний раз редактировалось Luckas147, 13.06.2013 в 01:48.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает скрипт с setTimeout (гляньте опытным глазом) пжл. Benos Firefox/Mozilla 4 24.03.2012 20:18
Проблема в интеграции эффекта в имеющийся скрипт ADS Events/DOM/Window 1 30.11.2011 23:39
проблема: браузер блокирует скрипт zenija2007 Events/DOM/Window 5 30.05.2010 23:43
проблема с рекурсией, не могу понять почему скрипт не выходит из неё. Flirer Общие вопросы Javascript 5 24.12.2009 01:01
Аргументы в setTimeout - проблема в IE 6 micscr Общие вопросы Javascript 8 28.09.2009 13:08