0

我被这个if语句搞砸了,它在javascript中不起作用。我正在使用js调用php和php文件 echo 'true';

我的java脚本代码

 function like_add(article_id){
$.post('my/like.php', {article_id:article_id}, function(data){
    if(data == 'true'){//this part never works
        alert(data);
    }else{
    alert(data);
    }
});

}

我试图改变警报alert('*'+data+'*');

并且知道有一个空格* true*。我怎样才能让这个脚本工作。

整个代码

 function like_add(article_id){
$.post('ajax/like.php', {article_id:article_id}, function(data){

    if(data == 'true'){
        total_votes(article_id);
    }else{
    alert(data);
    }
});

} PHP 代码

        if(previously_liked($article_id) === true){
        echo 'You\'ve already liked this!';                 
        }else{
            add_like($article_id);
            echo 'true';
        }


function total_votes(article_id){
$.post('ajax/total_votes.php', {article_id:article_id}, function(data){
    $('#article_'+article_id).text(data);

}); }

4

3 回答 3

2

好吧,您可以在测试中包含一个空格:

  if (data == ' true') { ... }

或者您可以在数据中寻找“真”模式:

  if (/true/.test(data)) { ... }

后者可能会更有弹性,尽管实际上最好让您的服务器返回一些更有条理且不那么模棱两可的东西。

于 2012-06-24T13:03:36.920 回答
0

我认为您可以执行以下操作:

  1. 检查您的响应中不应包含空格。或者
  2. 利用data = data.replace(/\s/g, "");
于 2012-06-24T13:07:59.757 回答
0

如果它是一个领先的空间困扰着你,试试

if (data.replace(/^\s+|\s+$/,'').toLowerCase() === 'true')
于 2012-06-24T13:34:12.400 回答