Javascript AJAX 调用范围 - 可能很愚蠢

标签 javascript php ajax scope

我遇到的问题可能是一个简单的错误。

正如您在下面会注意到的,我有一个重复函数检查,该函数引用外部 PHP 检查数据库。 PHP 正在工作并返回数据。

当我使用 duplicationCheck.done() 并解析数据时,我的 if 语句正确响应(即,如果用户输入了重复项,则会进行检查。问题如下:尽管下面的 if 语句正常运行,但当 isDuplicate 时设置为true时,在done()函数下面调用console.log命令时,它显示为未定义。我不明白为什么。根据我的研究,我认为这是AJAX的异步性质的问题打电话?

感谢您的宝贵时间。有什么想法吗?

$("#username_submit").click(function() {

  function checkForDuplication(username) {
    return $.ajax({
      url: 'static/experiments/computerized_handwriting/random_assignment.php',
      type: 'POST',
      data: {userName: username}
    });
  }

var duplicationCheck = checkForDuplication($('input:text').val());


  var isDuplicate;
  duplicationCheck.done(function(data){
        var response = JSON.parse(data);
        if(response.data['json_array'] == "duplicate"){
          isDuplicate = true;
          alert("dup");
        } else {
         isDuplicate = false;
        }
    });

  console.log(isDuplicate);

....

最佳答案

这是由于 ajax 的异步特性造成的。

在完成函数中从服务器返回后,您需要检查重复项。 但是您的 duplicationCheck 变量不是对函数的引用,而是它返回的内容。

正确的方法是这样的:

$("#username_submit").click(function() {
  $.ajax({
    url: 'static/experiments/computerized_handwriting/random_assignment.php',
    type: 'POST',
    data: { userName: $('input:text').val()}
  }).done(function() {
    var response = JSON.parse(data);
    if (response.data['json_array'] == "duplicate") {
      isDuplicate = true;
      alert("dup");
    }
    else {
     isDuplicate = false;
    }
    console.log(isDuplicate);
  });//done
});//submit click

....

关于Javascript AJAX 调用范围 - 可能很愚蠢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41841370/

相关文章:

javascript - 在 SVG 中切换图层

javascript - Vue.js调用组件方法报错

javascript - 为什么 jQuery.get() 改变了我的 URL?

php - 如何将项目/帖子添加到收藏夹

javascript - onclick 单选按钮将数字添加到总数中,但无限添加

javascript - 将元素附加到父标签之前

php cURL函数301错误

php - Imagemagick 与 imagick 的关系是什么?

php - 连接()到 unix :/var/run/php-fpm. 套接字失败(11 : Resource temporarily unavailable) while connecting to upstream, 客户端 : unix:, 服务器

jquery - 在ajax中引用 anchor 标记