【问题标题】:jquery: If statement not working inside ajax success functionjquery:如果语句在ajax成功函数中不起作用
【发布时间】:2021-03-18 16:42:26
【问题描述】:

我的 AJAX 中有一个成功函数,它从 python 脚本返回响应文本,可以是“SUCCESS”或“EMPTY”。 现在我想在成功函数中放置一个 if 循环,但是 if 循环不起作用。我从我的 python 脚本中获取了正确的数据,因为我的警报语句工作正常并打印“SUCCESS”。但它没有进入ifloop

我已经尝试了很多东西,但是控件没有进入 if 循环,谁能告诉我我做错了什么:

submitHandler: function (form) {

                $.ajax({
                    type: 'post',
                    url: '/cgi-bin/getdataworld.py',
                    data: $(form).serialize(),

                    success: function(data) {
                            //document.write(result);
                            console.log("result is "+data);
                            alert(data);

                            if(data === "SUCCESS"){
                            window.location = 'index.html';
                               }
                           else{
                                 alert("NO DATA PRESENT");
                               }


                    },

                    error: function (responseData) {
                console.log('Ajax request not recieved!');
            }

                });

                return false;
            }

【问题讨论】:

  • “if 语句”。这不是一个循环。另外,您确定“SUCCESS”周围没有空格吗?警报不会总是显示空白,或者很难看到。

标签: jquery ajax


【解决方案1】:

这意味着您回复的不是"SUCCESS"。它之前或之后可能有一个换行符或其他空格,可能不止一个。

也许:

if (/^\s*SUCCESS\s*$/.test(data)) {
    // Success
}

或者使用jQuery的$.trim:

if ($.trim(data) === "SUCCESS") {
    // Success
}

还要确保您没有回复 "Success""success",因为字符串比较区分大小写。

如果您不确定:

if (/^\s*SUCCESS\s*$/i.test(data)) {
    // Success
}

if ($.trim(data).toUpperCase() === "SUCCESS") {
    // Success
}

【讨论】:

  • 可能读错了,但我的印象是他根本没有进入 IF 或 ELSE 块。
  • @wanab_geek:哈哈!很高兴这有帮助。
  • @t.j.crowder 经过数小时的调试,这是我的问题的解决方案!谢谢!
  • 你成就了我的一天。
【解决方案2】:

检查“SUCCESS”之前/之后是否没有任何额外的空格

也尝试改变

if(data === "SUCCESS"){

if(data == "SUCCESS"){

【讨论】:

  • ====="SUCCESS" 是否等于"\nSUCCESS" 没有任何关系。
  • 我认为你的意思是 $.trim(data)
  • TJ:这是真的 - 我一开始已经说过可能存在空格问题 - 第二个注释是关于 === 在这里并不真正需要
  • @JerzyZawadzki:抱歉,一定是已经读过了。来晚了,晚安。 :-)
【解决方案3】:

我遇到了同样的问题,我在这里分享我的 PHP 和 JavaScript 代码

PHP 代码:

if(isset($result))
    $result_data['status']="success";
else
    $result_data['status']="failed";
 echo json_encode($result_data);
 die;

JavaScript 代码:

 $.ajax({
        type: "POST",
        url: '../ajax_check.php',
        data: data_added,
        success: function(data)
        {
 if(data['status']=="success"){
  $("#video-frame").append('<div class="alert alert-success" role="alert"><h3>Successfully Added!</h3></div>');
          }
}
});

正如你在这里看到的,我使用 if(data['status']=="success") 因为这个 if 条件无法执行。 data['status'] 带有未定义的未成功。

解决方案: var data1 = jQuery.parseJSON(data); 并使用 data1.status 而不是 data1['status']

var data1 =  jQuery.parseJSON(data);
          $("#video-frame .alert-success").remove();
          if(data1.status=="success"){
            $("#video-frame").append('<div class="alert alert-success" role="alert"><h3>Call started with '+allow+'</h3></div>');
          }

【讨论】:

    【解决方案4】:
    submitHandler: function (form) {
    
                $.ajax({
                    type: 'post',
                    url: '/cgi-bin/getdataworld.py',
                    data: $(form).serialize(),
    
                    success: function(data1) {
                            //document.write(result);
                            console.log("result is "+data1);
                            alert(data1);
    
                            if(data1 == "SUCCESS"){
                            window.location = 'index.html';
                               }
                           else{
                                 alert("NO DATA PRESENT");
                               }
    
    
                    },
    
                    error: function (responseData) {
                console.log('Ajax rariequest not recieved!');
            }
    
                });
    
                return false;
            }
    

    在这里尝试一下我注意到的两件事,一个是 === 在 if 语句中,另一个是您使用数据作为变量,有时它在某些浏览器中会发生冲突

    【讨论】:

      猜你喜欢
      • 2016-12-06
      • 1970-01-01
      • 2014-02-24
      • 2014-09-10
      • 2014-07-08
      • 1970-01-01
      • 2014-01-31
      • 2013-04-21
      • 2013-01-29
      相关资源
      最近更新 更多