在返回ajax值时隐藏按钮

hide button on return of ajax value

本文关键字:隐藏 按钮 返回 ajax      更新时间:2023-09-26

是通过ajax对其单击执行特定任务的按钮。通过ajax,我得到一个json格式的结果,在console

中如下所示
 ["25", 16, "ABC", "DEF", 1]

现在我想,每当有1在第4个位置,我希望隐藏几个按钮。我写的代码是

$.ajax({
    type: 'post',
    url: 'script.php',
    dataType: 'json',
    data: {
      txt: txtbox,
      hidden: hiddenTxt
    },
    cache: false,
    success: function(returndata) {
        if(returndata[4]=='1')
        {
            $("#first").hide();
            $("#second").hide();
            $("#third").hide();
        }
    },
    error: function() { 
      console.error('Failed to process ajax !');
    }
  });

if条件似乎起作用,因为我试图在if条件内放置一个警告框,它起作用了,但是按钮仍然显示。

我尝试使用警报框进行测试的代码是

if (returndata[4] == 1) 
    {
        alert("1");
    }

谁能告诉我为什么会这样

我知道这就是你所做的。我在挑战解决你的问题。让我们一个接一个地做。第一次尝试,用下面的代码代替你的代码:

$.post("script.php", {txt: txtbox, hidden: hiddenTxt}, function (res) {
  alert("Response: " + res);
  alert("Type: " + typeof res);
});

请在评论中告诉我你的结果。欢呼。

您在隐藏部分匹配了一个'1'作为string,但在警报部分匹配了一个1作为number。这可能是问题所在。

避免这种

if(returndata[4]=='1') 

使用

if(returndata[4] == 1)   

尝试遵循ajax方法的更改…

  1. 使用GET方法代替POST
  2. 不需要使用dataType:'json'

    $.ajax({
    type: 'GET',
    url: 'script.php',
    data: {
      txt: txtbox,
      hidden: hiddenTxt
    },
    cache: false,
    success: function(returndata) {
        if(returndata[4]=='1')
        {
            $("#first").hide();
            $("#second").hide();
            $("#third").hide();
        }
    },
    error: function() { 
      console.error('Failed to process ajax !');
    }
      });
    

的问候但是过犹不及

在评论中我看到你已经发布了ajax结果,这是:

["25", 16, "ABC", "DEF", 1] 

你的问题是比较,这是==="1"(当我开始写这个答案时,我看到了这种类型的比较),你有1作为数字,而不是"1"作为字符串,===意味着类型比较,所以以正确的方式它给出了假,因为1是数字,"1"是字符串。您可以通过将condition更改为:

来修复此问题。
returndata[4]===1

或不带类型检查:

returndata[4]==1

为了更好地理解这个答案,我准备了几个例子。

console.log("1 === '1'");
console.log(1==='1');
console.log("1 === 1");
console.log(1===1);
console.log("1 == '1' ( no type comarision )");
console.log(1=='1');