Php 如何在页面上没有提交按钮的情况下调用JS/ajax?
我有一个网站页面,其中只包含一个字段显示收件箱中的邮件数的数据,我需要刷新此页面,因为新邮件随时可能出现,因此用户在此页面上可以看到新邮件。我如何调用我的JS/ajax来进行刷新 我尝试了标题(“刷新:10”);但客户不高兴,因为它刷新了整个页面,他只希望没有消息刷新,因为他们进来…有人可以帮忙吗?谢谢 此页面的我的代码:Php 如何在页面上没有提交按钮的情况下调用JS/ajax?,php,javascript,html,ajax,Php,Javascript,Html,Ajax,我有一个网站页面,其中只包含一个字段显示收件箱中的邮件数的数据,我需要刷新此页面,因为新邮件随时可能出现,因此用户在此页面上可以看到新邮件。我如何调用我的JS/ajax来进行刷新 我尝试了标题(“刷新:10”);但客户不高兴,因为它刷新了整个页面,他只希望没有消息刷新,因为他们进来…有人可以帮忙吗?谢谢 此页面的我的代码: <?php use_stylesheets_for_form($search_form) ?> <?php use_javascripts_for_form
<?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>
欢迎
javascript中的Try timer是一种技术,允许您在加载页面后向服务器启动web请求。当使用AJAX请求时,页面不必重新加载(实际上,用户甚至不会注意到请求正在发生)
您应该向服务器启动一个AJAX请求,它将检查是否有任何新消息
要连续检查新消息,可以使用或方法创建计时器,以便在指定的时间段启动AJAX请求
虽然我不太喜欢在一个问题没有提到使用库时推广使用库,但您可能会发现使用库(例如)将极大地简化管理AJAX请求的过程,因为它附带了一个为您做艰苦工作的工具
无论您是否选择使用库来执行AJAX请求,解决方案的工作流如下所示:
使用计时器(每10秒,比如说,启动一个AJAX请求)访问服务器上的网页(例如checkfornewmessages.php
)
在服务器上,检查是否有任何新消息,并在输出中包括要向用户显示的内容(例如,新消息的数量、消息的标题等)
在AJAX请求的回调中,将AJAX调用的响应(将包含在PHP代码中创建的输出)设置为页面上某个DOM元素的内容(例如,您有新的)
我假设在使用表单($search\u form)时,您在某处有一个jQuery引用,如果没有,您可以下载它并将其包含在标题中
=======注意:未测试======
更改以下行
<span class='spn_med_black_rbc'>You have <?php echo $new_mail_cnt ?> new </span>
这将尝试每隔10秒使用newMessageCheck.php的内容刷新div,此文件应只输出一个值,即当前新消息的数量。您将:
setTimeout(samefunction,milliseconds)
在该函数中,您要自动充值并调用相同的
这将创建一个无限循环等待x毫秒谢谢,请查看我添加的一些代码…所有这些代码只是为了更新/刷新$new\u mail\u cnt??哎呀!在newMessageCheck.php中必须发生什么抱歉,但我做了一个教程,也在努力学习,所以还不了解所有内容…谢谢newMessageCheck.php应该只输出一个数字($new_mail_cnt)和你在当前文件中获得该值的方法相同,当前的方法是使用symfony框架,它包含其他类,但不知道如何工作,但谢谢你,已经排序了。现在唯一的事情是我将如何调用代码,我必须放在标记中,请??谢谢你也许可以把代码放到正常的body标签中,这并不理想,但应该可以工作
<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>
$(document).ready(function() {
$("#newMessageDiv").load
("newMessageCheck.php");
var refreshId = setInterval(function() {
$("#newMessageDiv").load('newMessageCheck.php?randval='+ Math.random());
}, 10000);
$.ajaxSetup({ cache: false });
});
setTimeout(samefunction,milliseconds)