|
|
|
| Здравствуйте.
Решил написать простенький чат на скорую руку, во всех браузерах работает нормально, а вот в IE никак
Не обновляется и всё ...
Вот код
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Chat</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#id_submit").bind("click", function() {
if ($.trim($("#id_name").val()) === "")
{
alert('Пожалуйста, заполните поле "Автор"');
return false;
}
if ($.trim($("#id_comment").val()) === "")
{
alert('Пожалуйста, заполните поле "Сообщение"');
return false;
}
$("#id_submit").css("display", "none");
$("#info").load("addmes.php",
{name: $("#id_name").val(),
comment: $("#id_comment").val()},
$("#id_submit").css("display", "block"));
})
});
function runMultiple()
{
$("#info").load("addmes.php");
}
var timerMulti = window.setInterval("runMultiple();", 4000);
</script>
</head>
<body>
<div id="info" style="width:500px; height:300px; background:#CCC; overflow:scroll;">
<? //include_once("addmes.php"); ?>
</div>
<p>
<input type="text" name="id_name" id="id_name" />
</p>
<p>
<textarea name="id_comment" id="id_comment" cols="45" rows="5"></textarea>
</p>
<p>
<input type="submit" name="id_submit" id="id_submit" value="Отправить" />
</p>
</body>
</html>
|
addmes.php
<?
header("Content-type: text/html; charset=utf-8");
include_once("config/config.php");
mysql_query("SET NAMES 'utf8'");
$name = @mysql_real_escape_string($_POST["name"]);
$comment = @mysql_real_escape_string($_POST["comment"]);
if ($name && $comment)
{
$query = "INSERT INTO tableChat (DateCreate, login, mes, status) VALUES ( NOW(), '$name', '$comment', 'show') ";
if(!mysql_query($query)) exit(mysql_error());
}
$query = mysql_query("SELECT * FROM tableChat WHERE status = 'show' ORDER BY id DESC ");
if (mysql_num_rows($query))
{
while($mes = mysql_fetch_array($query))
{
print "<div>{$mes['DateCreate']} ". htmlspecialchars($mes["login"], ENT_QUOTES) ."</div>
<div>". htmlspecialchars($mes["mes"], ENT_QUOTES) ."</div><hr>";
}
}
?>
|
Где может быть подводный камень для IE, не могу понять ...
P. S. Взял за основу пример из книги "PHP на примерах (2 издание)" | |
|
|
|
|
|
|
|
для: Den*s
(22.01.2012 в 19:38)
| | Хм... обычно такие проблемы в IE бывают, если вместо PHP-скрипт присылает ему данных в кодировке, отличной от UTF-8, но я гляжу тут очень жестко в этом плане задано... Попробуйте отладочные alert-ы в JavaScript натыкать - он вообще запускает JavaScript и если да, то до какой точки заходит? Во втором параметре load() тоже можно задать функцию, которая выполняется после отработки AJAX-запроса. Её тоже можно задействовать в отладке. | |
|
|
|
|
|
|
|
для: cheops
(22.01.2012 в 19:52)
| | Судя по всему проблема в
window.setInterval("runMultiple();", 4000);
вроде как IE её не любит.
Отсюда вопрос который был у меня с самого начала, есть ли в jQuery механизм для запуска функции через определённый промежуток времени, типа аналога этого куска
function runMultiple()
{
$("#info").load("addmes.php");
}
var timerMulti = window.setInterval("runMultiple();", 4000);
|
| |
|
|
|