2013-10-26 50 views
0

我的JS检查我的textarea上是否存在youtube链接。我将URL发送到一个PHP文件,将URL回显给JS,并附加结果。防止从PHP返回的数据被JS打印两次

问题im有,返回的数据正在打印(或追加)在我的情况下,两次

如果我输入,在我的textarea的YouTube链接http://www.youtube.com/watch?v=iol0B-clFFM,我此链接发送到getyoutube.php与状态200 OK

Request URL:<website> /getyoutube.php?url=youtube.com/watch?v=iol0B-clFFM 
Request Method:POST 
Status Code:200 OK 
Request Headersview source 
Accept:*/* 
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 
X-Requested-With:XMLHttpRequest 
Query String Parametersview 
url:youtube.com/watch 

PHP文件只是呼应了网址,并这是我从中得到的回应。


该结果将被JS中获取,且该结果附加到HTML元素。但被追加数据被打印两次

[这是我的JS]

$(document).ready(function(){ 
    var youtube = //regex 
    var getUrl = $('#url'); 

    getUrl.keyup(function() { 
     if (youtube.test(getUrl.val())) { 
     var youtube_url = getUrl.val().match(youtube)[0]; 

     $.post("./includes/getyoutube.php?url="+ youtube_url, { 
     }, function(response){ 
     $('.echotest').append(response); 
     });  
     } 
}); 

tldr:将数据发送到通过POST PHP文件,并回该数据。数据由我的JS打印两次。

[更新]

我添加alert(response)和即时得到2个警报。一个接一个地。看来我的success function正在循环两次?不知道为什么。

+0

console.log(response); ? – underscore

+1

或许keyUp由于某种原因被触发两次。存储网址并与之前进行比较,以确保它不相同。 – Colandus

+0

@samitha我变空了。我应该期待看到什么数据? – bobbyjones

回答

0

当您使用keyup情况下,如果开枪 KEYUP运动事件,释放按Ctrl时也是如此。改为使用keypress

如果您想要在input中粘贴某些文本时触发事件,请使用paste事件。