我的html表单上的输入有问题。确实,我正在将这个输入的twitter名称放入一个Ajax函数中,该函数通过twitter从api中调用了推文。 由于我有一个setInterval函数来检查更新,输入一次又一次地传递给函数来获取推文。为什么我的函数会继续从我的输入文本字段中读取输入内容?
问题是该函数似乎直接从文本输入框中的内容读取输入。因此,如果用户在没有按下输入按钮或按下按钮的情况下更改文本,该功能会不断读取该文本作为输入。因此,在输入或按下按钮提交后,最初输入的输入不是固定的。
这里是HTML表单以输入:
<div id="topdiv">Input Twitter ID: <input type="text" id="userid" onkeydown="if(event.keyCode===13) {document.getElementById('tweet-button').click();}">
<input type="submit" id="tweet-button" onclick="getStatusesX();" value="Get recent tweets">
<p id="tweetbox"></p>
</div>
这里的功能是:
function getStatusesX() {
var userID = document.getElementById("userid").value;
getStatuses(userID);
var intervalstop = setInterval(function() {getStatuses(userID);}, 20000);
clearInterval(intervalstop);}
//Create a cross-browser XMLHttp Request object
function getXMLHttp() {
var xmlhttp;
if (window.ActiveXObject) {
XMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
XMLHttp = new XMLHttpRequest();
} else {
alert("Your browser does not support XMLHTTP!");
}
return XMLHttp;
}
//function that searches for the tweets via php
function getStatuses(userID){
XMLHttp1 = getXMLHttp();
//ajax call to a php file that will extract the tweets
XMLHttp1.open('GET', 'TwitterGlimpsePHP.php?userid='userID, true);
// Process the data when the ajax object changes its state
XMLHttp1.onreadystatechange = function() {
if(XMLHttp1.readyState == 4) {
if(XMLHttp1.status ==200) { //no problem has been detected
document.getElementById("tweetbox").innerHTML=XMLHttp1.responseText;
}
}
}
XMLHttp1.send(null);
}
我想作为文本按下ENTER后应采取的输入。我曾尝试将其分配给变量,但无法解决为什么它始终从输入字段进行读取。任何帮助赞赏。
难道是因为你正在为getStatuses设置一个间隔调用,因此每次调用时都会重新执行代码,因此每次都从输入框中获取文本。 – 2013-04-11 20:56:00
您可以禁用输入或其他...按照您的功能方式,您只需点击一次即可调用它n次 – Hackerman 2013-04-11 20:57:17
因此,每次用户单击输入或提交查询时,它都会增加间隔?您应该在getStatusesX函数中将其指定为var和clearInterval(var) – 2013-04-11 21:00:39