如何调用页面上没有提交按钮的JS/ajax?
我有一个网站页面,其中只包含一个字段给出收件箱中邮件数量的数据,而且我需要随时刷新这些邮件,以便用户在此页面上可以看到有新消息。我怎么能打电话给我的JS/ajax来做更新?如何调用页面上没有提交按钮的JS/ajax?
我试过header(“Refresh:10”);但客户并不满意,因为它刷新了整个页面,他只希望消息不要刷新,因为他们进来...有人可以帮忙吗?感谢
我这个页面代码:
<?php use_stylesheets_for_form($search_form) ?>
<?php use_javascripts_for_form($search_form) ?>
<div id='div_longgray_gradient2'>
<div id='div_float_img'>
<br/>
<table width='96%' border='0'>
<tr>
<td colspan='2' align='right'>
<form action="<?php echo url_for('profiles/search') ?>" method="post" >
<table>
<tr>
<td>
<span class='spn_med_lightblue_rbc'>Profile Search
</span>
<?php echo $search_form['uc_other']->render(array('default')); ?> </td>
<td><input class='submit_img' type="image" src="/images/rainbow/gobuttonbluesmall.png" value="Submit" alt="Submit"></td>
</tr>
</table>
</form>
</td>
</tr>
<tr>
<td rowspan='2' width='40px' align='left'>
<img src='/images/rainbow/arrow.png'>
</td>
<td align='left'>
<span class='spn_big_black_rbc'>WELCOME <?php echo $usr_profile->getName() ?></span>
</td>
<td align='left'>
<?php
if (0)
{
// $filename = $usr_profile->getMsisdn();
$filename = $usr_profile->getProfilePicPath();
if ($filename && file_exists($filename))
{
$source = imagecreatefromjpeg($filename);
}
else
{
$filename = $usr_profile->getDefaultProfilePicPath();
$source = imagecreatefromjpeg($filename);
echo "<span class='spn_big_black_rbc'>You have not uploaded an image yet</span>";
}
}
if($usr_profile->existsProfilePic()==FALSE)
{
echo "<span class='spn_big_black_rbc'>You have not uploaded an image yet</span>";
echo "</br>";
}
if($usr_profile->checkForMissingInfo()== 1)
{
echo "<span class='spn_big_black_rbc'>You have some missing info</span>";
echo " ";
echo link_to('Edit','profile/edit','class=link_medium');
}
?>
</td>
</tr>
<tr>
<td align='left'>
<span class='spn_med_lightblue_rbc'>TO RAINBOW</span>
<span class='spn_med_black_rbc'>CODE</span>
<span class='spn_med_lightblue_rbc'>...SHINE ON</span>
</td>
<td>
</td>
</tr>
</table>
<br/>
<table class='table_border_light' width='820px'>
<tr>
<td class='td_header_blue' colspan='3' align='left'>
<span class='spn_big_black_rbc'>
MY FEEDS
</span>
</td>
<td class='td_header_blue' colspan='3' align='left'>
<span class='spn_big_black_rbc'>
RAINBOWCODE NEWS
</span>
</td>
</tr>
<tr>
<td valign='top' colspan='3' width='50%' align='left'>
<span class='spn_med_black_rbc'>You have <?php echo $new_mail_cnt ?> new </span>
<?php echo link_to('Messages','messagebox/list','class=link_medium_blue'); ?>
</br>
<span class='spn_med_black_rbc'>You have
<?php
echo sizeof($block_records);
?> blocked users </span>
</td>
<td valign='top'colspan='3' width='50%' align='left'>
<ul>
<li>
<a href="http://spreadsheets.google.com/a/miranetworks.net/spreadsheet/viewform?formkey=dEVlYTdJTzZiU0JPTnZqYWlZQTJRZ0E6MQ" class='link_medium_blue'> Rate us! Complete the online questionnaire</a></b>
</li>
<?php
foreach($news as $news_item)
{
echo "<li>".$news_item->getNews(). "</li>";
$newsId = $news_item->getId();
if ($newsId == 1)
{
//some echos here to display text
}
}
?>
</ul>
</td>
</tr>
<tr>
<td colspan='3' align='left'>
<span class='spn_big_black_rbc'>
MOOD BAROMETER
<?php echo link_to('how does it work?','util/barometer','class=link_medium_blue'); ?>
</span>
<?php
include_component('profile','moodmetershow');
?>
</td>
<td colspan='3' align='left'>
<?php
include_component('profile','moodmeter');
?>
</td>
</tr>
<tr>
<td colspan='3' align='left'>
</td>
</tr>
</table>
</div>
</div>
我加入这个为$ new_mail_cnt:然后
echo $new_mail_cnt = '<script type="text/javascript">getMessages();</script>';
我有:
<script language="JavaScript" type="text/javascript">
var receiveReq = getXmlHttpRequestObject();
var mTimer;
function getXmlHttpRequestObject()
{
if (window.XMLHttpRequest)
{
return new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
return new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
document.getElementById('p_status').innerHTML =
'Status: Cound not create XmlHttpRequest Object.' +
'Consider upgrading your browser.';
}
}
function getMessages()
{
receiveReq = getXmlHttpRequestObject();
if (receiveReq.readyState == 4 || receiveReq.readyState == 0)
{
receiveReq.open("POST", 'getMessage.php', true);
receiveReq.onreadystatechange = handleReceiveMessage();
receiveReq.send(null);
document.getElementById('new_messages').innerHTML = receiveReq.responseXML; //not sure here
}
mTimer = setTimeout('getMessage();',2000);
}
function handleReceiveMessage()
{
if (receiveReq.readyState == 4)
{
var chat_div = document.getElementById('div_chat');
var xmldoc = receiveReq.responseXML;
var message_nodes = xmldoc.getElementsByTagName("message");
}
}
</script>
AJAX是一种允许您在页面加载后启动对服务器的Web请求的技术。当使用AJAX请求时,页面不必重新加载(实际上,用户甚至不会注意到请求正在发生)。
您应该启动一个AJAX请求到您的服务器,它将检查任何新消息。
要不断地检查新邮件,你可以使用任何的window.setTimeout或window.setInterval方法,推出在指定时段AJAX请求创建一个定时器。
虽然我不是推广使用库的忠实粉丝,但当问题没有提及它们的使用时,您可能会发现使用一个(例如jQuery)将大大简化管理AJAX请求的过程,因为它附带complete module这对你来说很辛苦。
无论您选择使用库来执行你的AJAX请求与否,工作流程的解决方案如下:
- 一个计时器(每10秒说,推出一个AJAX请求)到您服务器上的网页(例如
checkfornewmessages.php
)。 - 在您的服务器上,检查是否有新消息,并在输出中包含要显示给用户的内容(例如,新消息的数量,消息的标题等等)。
- 对于您的AJAX请求,在您的回调中,将AJAX调用(其中包含您在PHP代码中创建的输出)的响应设置为页面上某个DOM元素的内容(例如
<span class='spn_med_black_rbc'>You have <?php echo $new_mail_cnt ?> new </span>
) 。
我在你use_javascripts_for_form($ search_form)假设你有一个jQuery的引用,如果没有什么地方可以下载它,它包含在头
======注意UNTESTED === ===
更改以下行
<span class='spn_med_black_rbc'>You have <?php echo $new_mail_cnt ?> new </span>
到
<span class='spn_med_black_rbc'>You have <div id='newMessageDiv'><?php echo $new_mail_cnt ?></div> new </span>
添加类似下面的进入HEAD标签
$(document).ready(function() {
$("#newMessageDiv").load
("newMessageCheck.php");
var refreshId = setInterval(function() {
$("#newMessageDiv").load('newMessageCheck.php?randval='+ Math.random());
}, 10000);
$.ajaxSetup({ cache: false });
});
这将尝试刷新股利每10秒newMessageCheck.php的内容,这个文件应该只是量只输出一个值当前的新消息。
谢谢你,我会尝试这个 –
在newMessageCheck.php对不起一定会发生什么,但我做了一个教程,并与得如此不明白了一切尚未...谢谢 –
的newMessageCheck.php应该只是输出的单数($挣扎new_mail_cnt)相同的方式,得到了在当前文件 – ChrisK
你就把:
setTimeout(samefunction,milliseconds)
的功能要自动充值和调用相同
此创建一个无限循环,等待X毫秒
谢谢请看到一些代码,我添加...所有这些代码只是为了更新/刷新$ new_mail_cnt?哎呀! –