【问题标题】:Having an issue with AJAX call on Paste event jQuery对粘贴事件 jQuery 的 AJAX 调用有问题
【发布时间】:2016-05-11 23:28:09
【问题描述】:

我正在尝试获取表单文本字段的粘贴内容以触发 AJAX 操作,该操作连接到 php 脚本以处理数据,然后发送相关响应。

php 脚本运行良好,所以我知道问题不存在。

jQuery 函数也可以完美运行,如果我这样做了,会提醒粘贴到文本字段中的任何内容

$(document).ready(function(){

    $('input').on('paste', function () {

    var capture = this;

      setTimeout(function () {

          var url = $(capture).val();

          alert (url);

      }, 100);  

   });  
});

但是当我尝试添加 AJAX 业务时,一切都失败了。

我显然做错了,但我不知道正确的方法。 我调用 AJAX 的方式与我在一大堆其他脚本中使用的方法相同,并且在这些脚本中运行良好,因此它必须与调用它的位置有关。

我已经尝试过(离开文档以节省混乱):

$('input').on('paste', function () {

var capture = this;

    setTimeout(function () {

        var url = $(capture).val();

    }, 100);

        var data = {
                    'action': 'myAction',
                    'security': $( '#my-nonce' ).val(),
                    'url' : url,
                    'check' : check
                   };

        $.post(myajax.ajaxurl, data, function(response) {

                    alert(response);

        }           
});

也试过了:

$('input').on('paste', function () {

var capture = this;

    setTimeout(function () {

        var url = $(capture).val();

        var data = {
                    'action': 'myAction',
                    'security': $( '#my-nonce' ).val(),
                    'url' : url,
                    'check' : check
                   };

        $.post(myajax.ajaxurl, data, function(response) {

               alert(response);

        } 

    }, 100);

});

我也尝试直接在数据变量中设置 url 变量:

var data = {
            'action': 'myAction',
            'security': $( '#my-nonce' ).val(),
            'url' : $(capture).val(),
            'check' : check
           };

但没有任何效果。

我怀疑这与 setTimeout 函数有关。 在使用 setTimeout 时是否有特定的触发 AJAX 调用的方法?

只是为了清楚起见。我正在尝试在粘贴事件上触发 AJAX 调用。

【问题讨论】:

  • 没有任何效果。你能说得更具体一点吗?控制台有错误吗?
  • check 来自哪里?还有myajax?
  • 检查是 PHP 脚本中处理的 nonce 安全性的一部分(它有效)。 myajax 是我的 admin-ajax.php (wordpress) 的本地化路径。
  • @kecer 控制台中没有错误。什么都没有,我的意思是什么都没有发生。 AJAX 调用未触发 PHP 脚本。
  • 我建议使用调试器,设置断点并一步一步地进行,验证一切是否按预期工作。

标签: javascript jquery ajax


【解决方案1】:

尝试增加时间,我的意思是 设置超时(函数(){... ,1000} 尝试不同的时间。

如果您得到答案,那么您的邮寄电话会占用大量时间。

【讨论】:

  • 我不会说这行得通。检查this answer 和 cmets。据此,即使是 0ms 的延迟也应该足够了
  • 是的,该函数已经抓取粘贴数据,没有问题设置为 100。我是否将 AJAX 数据放在正确的位置?这就是我似乎出错的地方。如果我尝试将 AJAX 放在 setTimeout 函数之后,则它不起作用。
  • 尝试移除 setTimeout 函数。看看你的帖子有没有答案
  • 删除超时不会给脚本时间来获取数据,只是返回一个空白变量
  • 也许无法在粘贴时触发 AJAX 操作?
猜你喜欢
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
  • 1970-01-01
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
相关资源
最近更新 更多