防止PHP返回的数据被JS打印两次

时间:2013-10-26 11:31:36

标签: javascript php jquery

我的JS检查我的textarea上是否存在youtube链接。我将URL发送到一个PHP文件,该文件将URL回送给JS,并附加结果。

我遇到的问题,在我的案例中打印(或追加)了返回的数据,两次

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

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被圈了两次?不知道为什么。

1 个答案:

答案 0 :(得分:0)

当您使用keyup事件时,即使在释放 Ctrl 时,也会在每个键盘动作时触发一个事件。请改用keypress

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