Обновление: проблема исправлена! Вы можете взять JavaScript из цикла и передать параметр к нему, посмотрите на комментарии, чтобы увидеть полный soultions (: спасибоОбновление сообщений Live - Javascript не загружен даже из-за его [HTML + PHP + Javascript]
Я пытался держать его коротким, как я мог, кроме как от этого! ! линия его все важно :)
Это, как работает мой цикл:
1) Я использую время цикла на всех сообщений найдено (работ)
2) Затем Im вставляя данные сообщения в шаблон html внутри цикла while.
3) Затем я даю каждое сообщение функцию OnClick со специальным идентификатором ..
Херес часть странно, все отлично работает, после обновления ..
позвольте мне показать вам исходные коды перед тем поясню точную проблему:
Это начало цикла, я просто захватить данные для конкретного сообщения, а затем закройте PHP для продолжения внутри цикла ...
<?php
while($inbox = mysql_fetch_array($sqlinbox))
{
$pm_id = $inbox['id'];
$sender = $inbox['sender'];
$subject = $inbox['subject'];
$message = $inbox['message'];
?>
Теперь это, Что Происходило внутри цикла,
Сначала я произвожу сам Сообщ:
<li>
<a href="javascript:;" onclick="loadmsg<?php echo $pm_id; ?>()">
<center>
<div>
<strong>
<span class=" label label-danger">
<?php echo $sender; ?>
</span>
</strong>
</div>
</center>
<div style="width:80%; text-align:center; margin:auto;"><?php echo $message; ?></div>
</a>
</li>
А затем сгенерировать простой яваскрипт функции для загрузки, что сообще внутри DIV ... Я знаю большую тему много возможностей, но проблема очень проста, но я не знаю, пожалуйста, помогите продолжить .. это сценарий:
<?php
echo '
<script>
function loadmsg' . $pm_id . '() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("page-wrapper").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "/LinkMonster/viewmsg.php?msg_id=' . $pm_id . '", true);
xhttp.send();
}
</script>
';
?>
И конечно же позволяет закрыть время цикла ..:
<?php
}
?>
Так поясню, что выводит, что:
<li>
<a href="javascript:;" onclick="loadmsg16()">
<center>
<div>
<strong>
<span class=" label label-danger">
[email protected] </span>
</strong>
</div>
</center>
<div style="width:80%; text-align:center; margin:auto;">lllllllllll</div>
</a>
</li>
<script>
function loadmsg16() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("page-wrapper").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "/LinkMonster/viewmsg.php?msg_id=16", true);
xhttp.send();
}
</script>
Bigger example (more then 1 msg) - Pastebin.com
Теперь все это работает, когда я получаю новый msg и обновляю страницу, скрипты генерируются, как ожидалось, и когда я нажмите msg, он изменит div с именем «page-wrapper» на страницу с сообщением msg (/LinkMonster/viewmsg.php?msg_id = 16)
Но, всегда, но я хотел вывести вещи на новый уровень и обновить сообщения вживую без обновления самой страницы, так как я получаю сообщение, оно просто появляется там, где нужно, так что я сделал это:
<div id="inboxmsgs">
<?php
include("./UpdateMsgs.php");
?>
</div>
<script>
function updateMSGS()
{
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("inboxmsgs").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "/LinkMonster/UpdateMsgs.php", true);
xhttp.send();
}
setInterval("updateMSGS()",1000); //call updateRow() function every 1 seconds.
</script>
так basiclly я беру этот Div с именем «inboxmsgs» и я использую включить, чтобы загрузить сообща впервые в этот DIV, то я использую ту же яваскрипт функцию с setIntreval из каждую секунду, чтобы загрузить сообщения снова и снова
Это работает как Что ж! Я отправляю себе сообщение, и он появляется без каких-либо проблем, вживую, без обновления ...
Итак, если все работает, почему я здесь?
Функции javascript, которые загружаются после того, как каждое сообщение действительно не загружается на страницу, только в html, не поймите меня неправильно, они порождаются там, где они должны, и у них также есть правильные значения, просто хром говорит, что он не может найти функцию даже благодаря ее там! и если я обновляю страницу, она просто найдет функцию, как будто мне нужно сказать хроме, чтобы запросить эту функцию или что-то в этом роде. Это для вас какое-то значение? пожалуйста, не стесняйтесь задавать любые вопросы и даже полную систему для тех, кто просто этого хочет (:
Просто, чтобы убедиться, что вы меня поняли: Допустим, у меня есть 3 msgs во входящих, если я нажимаю на них, все работает и он показывает страницы сообщений правильно, но затем я получаю новый msg, msg отображается правильно, javascript также загружается правильно, я все еще могу щелкнуть все 3 сообщения, которые у меня уже были, но если я нажму новый msg (num4), хром говорит, что я не смог найти эту функцию [ex: loadmsg16()], если я отправлю еще один msg, я все же могу получить доступ ко всем 3 msgs, которые у меня уже были, но теперь есть 2 дополнительных сообщения, которые я не могу нажать, потому что их функции не загружены , теперь в этот момент, если я обновляю страницу, все 5 сообщений можно полностью щелкнуть!
Полный исходный код:
<?php
while($inbox = mysql_fetch_array($sqlinbox))
{
$pm_id = $inbox['id'];
$sender = $inbox['sender'];
$subject = $inbox['subject'];
$message = $inbox['message'];
?>
<li>
<a href="javascript:;" onclick="loadmsg<?php echo $pm_id; ?>()">
<center>
<div>
<strong>
<span class=" label label-danger">
<?php echo $sender; ?>
</span>
</strong>
</div>
</center>
<div style="width:80%; text-align:center; margin:auto;"><?php echo $message; ?></div>
</a>
</li>
<li class="divider"></li>
<?php
echo '
<script>
function loadmsg' . $pm_id . '() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("page-wrapper").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "/LinkMonster/viewmsg.php?msg_id=' . $pm_id . '", true);
xhttp.send();
}
</script>
';
}
?>
почему, я имею в виду, ПОЧЕМУ вы создаете различные функции делают то же самое для каждого сообщения? – phobia82
Это будет намного проще, чище и будет работать сразу, если вы просто измените 'loadmsg Php echo $ pm_id; ?>() 'to' loadmsg ( php echo $ pm_id;?>) '. Примечание. Я передаю идентификатор в качестве параметра вместо части имени функции. Затем запустите свою функцию за пределы цикла, объявите ее только один раз как «loadmsg (id)» и используйте идентификатор внутри функции по мере необходимости. – phobia82
внутри функции loadmsg (id), как я могу вызвать идентификатор внутри этой строки? xhttp.open ("GET", "/LinkMonster/viewmsg.php?msg_id= '. $ Pm_id.'", True); Я пробовал. Я бы . а также . $ id. оба не возвращают правильный идентификатор:/ –