我如何停止我的javascript功能,如果输入是空的,如果输入不是一个现有的twitter帐户
How do I stop my javascript functioning if the input is empty and if the input is not an existing twitter account?
我的html表单上的输入有问题。目前,我正在采取的输入,这是一个推特名称到一个Ajax函数,通过php从推特api调用推文。
问题是,如果输入是空的或输入不是一个有效的twitter帐户,它执行php调用twitter api和返回是一个错误消息。
如果twitter帐户不存在或输入为空,我如何停止Ajax功能?php端需要做些什么吗?
下面是输入的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>
接收输入并连接到php的脚本:
var intervalstop;
function getStatusesX() {
//trying to stop an empty input from executing but not working
if(input == ""){
alert("PLease enter a Twitter ID");
return false;
}
clearInterval(intervalstop);
var userID = document.getElementById("userid").value;
getStatuses(userID);
intervalstop = setInterval(function() {getStatuses(userID);}, 20000);
}
//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();
//var userID = document.getElementById("userid").value;
//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);
}
input
在任何地方都没有定义。移动这一行:
var userID = document.getElementById("userid").value;
检查userID
是否为空:
function getStatusesX() {
var userID = document.getElementById("userid").value;
if(userID === ''){
alert("Please enter a Twitter ID");
return false;
}
clearInterval(intervalstop);
getStatuses(userID);
intervalstop = setInterval(function() {getStatuses(userID);}, 20000);
}
你正在检查input
,但你没有定义这个。检查userID而不是
function getStatusesX() {
clearInterval(intervalstop);
var userID = document.getElementById("userid").value;
//trying to stop an empty input from executing but not working
if(userID == ""){
alert("PLease enter a Twitter ID");
return false;
}
getStatuses(userID);
intervalstop = setInterval(function() {getStatuses(userID);}, 20000);
}
正如前面的响应所述,对于空输入情况,您正在检查一个未定义的变量。
至于检查输入是否是一个有效的twitter用户,它必须在服务器端完成。例如,您的"TwitterGlimpsePHP.php"脚本可能会执行此检查,如果用户无效,则返回一个特殊的http状态。你可以使用4XX的http状态,但我不确定哪个是最相关的(400可能是错误的请求)。
最后一个修改是将getStatutes函数更改为检查服务器响应:
//function that searches for the tweets via php
function getStatuses(userID){
XMLHttp1 = getXMLHttp();
//var userID = document.getElementById("userid").value;
//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;
} else if (XMLHttp1.status ==400 ) {
// The user was not valid. Stop refresh.
clearInterval(intervalstop);
}
}
}
XMLHttp1.send(null);
}
服务器端编辑:
您提供的服务器端脚本似乎没有检查twitter状态(我不是php专家,更多的java/.net开发,所以我可能是错的)。对于无效用户,twitter将给出不同的回答。例如,查看https://api.twitter.com/1/statuses/user_timeline/fdfsfsfsfsdf.xml,您将看到:
<errors>
<error code="34">Sorry, that page does not exist</error>
</errors>
你的php脚本将不得不检查这种类型的响应从twitter然后返回http状态。您可以看一下这个问题,了解如何设置http状态:设置响应状态码。我希望这些解释能对你有所帮助。
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- 如果值为空,如何设置输入的默认值?jQuery
- 边框颜色是't如果输入为空,则更改
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- 如果用户输入的长度小于最小长度,则显示错误消息
- jQuery从输入中获取值并检查它是否'It’是的.如果是这样,它应该公布有多少是正确的
- 如果图像标记是用javascript编写的,并且需要用户输入,那么图像不会随页面加载吗
- 用户名输入如果其他块不能正常工作/Javascript-jQuery-AJAX
- jQuery表单验证(如果==“执行此操作”)仅适用于第一次输入
- 如果没有任何输入,如何启用按钮
- 如果通过Javascript更改了输入,则jQuery会触发事件
- 如果不兼容,则隐藏范围输入
- 试图清理一个电话号码,以便如果它像816-345-6757一样被输入,它会像8163456757一样返回它
- AngularJS阻止提交如果输入没有't已验证
- 如果键入文本,请更改输入边框颜色
- 值首先发布,然后只有它完成输入(如果单击).向后需要(代码是corect)
- 检查表单字段的输入 - 如果存在邮政编码,则提醒 javascript
- 验证 HTML 表单输入 - 如果选项卡无效,则阻止选项卡
- 单击另一个文本框时清除文本输入(如果它是空的)-jQuery
- 邮件类型输入:如果邮件错误或正确,动态改变按钮的颜色/文本