我有一个像这样定义的函数:
function call_view_details(viewid)
{
view_details(viewid);
setInterval(function(){view_details(viewid)},5000);
}
我在页面加载时调用。主要是设置view_details()
的间隔。
此处view_details()
:
function view_details(viewid)
{
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("item_details").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","view_item.php?id="+viewid,true);
xmlhttp.send();
return false;
}
如您所见,view_details()
通过div
的回复更新了一些view_item.php
。
但我希望在某些情况下(发生在view_item.php
),在clearInterval()
上执行view_details()
。
现在我不想说:
if(xmlhttp.responseText==/*something*/)
/*clearInterval*/
这是因为,首先,有很多案例,其次,在这些情况下,view_item.php
回应我需要更新div
的内容。
所以也许我可以让view_item.php
除了响应之外还传递一些变量?然后我可以对该变量做出条件。
我希望它足够清楚......
谢谢
答案 0 :(得分:1)
返回一个JSON对象。
view_item.php
<?php
// PHP stuff
$returnArray = array();
$returnArray['message'] = $yourRespondText;
$returnArray['clearInterval'] = true; // return true when you want to call clearInterval
echo json_encode($returnArray);
JS:
function call_view_details(viewid)
{
view_details(viewid);
var interval = setInterval(function(){view_details(viewid, interval )},5000);
}
function view_details(viewid, yourInterval)
{
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
data = JSON.parse(xmlhttp.responseText);
if(data.clearInterval) {
clearInterval(yourInterval);
}
document.getElementById("item_details").innerHTML=data.message;
}
}
xmlhttp.open("GET","view_item.php?id="+viewid,true);
xmlhttp.send();
return false;
}