ajax成功:我无法检查返回的信息是真还是假

时间:2014-01-28 03:04:04

标签: php jquery ajax

当我尝试检查返回的信息是真还是假时,我遇到了问题。在console.log中返回true但总是进入else ...

$.ajax({
                    url: "ajax.php",
                    type: 'POST',
                    data: 'act=login&email=' + email + '&password=' + password + '&remember=' + remember,
                    success: function(data) 
                    {
                        console.log(data);
                        if (data.success === true)
                        {
                            $("#login-form")[0].reset();
                            window.location.replace('dashboard.php');
                        }
                        else
                        {
                            $(".error-message span").html('Please, insert valid data.');
                            $('.error-message').fadeIn('slow', function () {
                                $('.error-message').delay(5000).fadeOut('slow');
                            });
                        }
                    }
                });

谢谢大家。

5 个答案:

答案 0 :(得分:1)

Console.log打印data

您的IF语句检查`data.success'。这些是两个不同的元素。

您从ajax.php发送数据的格式是什么?

您不能假设数据是数组或JSON对象,您必须先解析它。

json = JSON.parse(data);

if (json.success === true) {} //or if (json === true) depends on the response from ajax.php

根据您的评论,如果您返回的数据只是真或假,只需使用

即可
if (data == true) {//I use double and not triple equality because I do not know if you are returning a string or a boolean.
}

你有两个问题:

  1. 您正在尝试访问data.success而不仅仅是数据。
  2. 您正在使用严格的比较(===),我真的不确定您的返回数据是否是布尔值而不是字符串。 @Pekka的回答也提到了它(但由于data.success不存在,它不会起作用)。
  3. 希望这有帮助!

答案 1 :(得分:0)

返回值可能是字符串true,而不是JavaScript布尔值true

因为您使用严格的===比较,它需要相同的变量类型,所以它总是会失败。

与字符串比较:

if (data.success == "true")

答案 2 :(得分:0)

如果您的数据看起来像{"success": true},那么数据解析可能是一个问题,其中ajax处理程序没有将响应解析为json数据..而只是传递一个字符串。

因此,请尝试将dataType属性设置为json,以告诉ajax您期望json响应。

$.ajax({
    url: "ajax.php",
    type: 'POST',
    data: 'act=login&email=' + email + '&password=' + password + '&remember=' + remember,
    dataType: 'json',
    success: function (data) {
        console.log(data);
        if (data.success === true) {
            $("#login-form")[0].reset();
            window.location.replace('dashboard.php');
        } else {
            $(".error-message span").html('Please, insert valid data.');
            $('.error-message').fadeIn('slow', function () {
                $('.error-message').delay(5000).fadeOut('slow');
            });
        }
    }
});

答案 3 :(得分:0)

你试过吗?

  

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

或者如果它以“Json”格式出现,您需要在“成功”事件中转换为这样的对象。 (包括json.js)

var JSONfoo = JSON.stringify(data);                           
obj = eval('(' + JSONfoo + ')');
if(obj != null){                        
alert(obj.success );  
     

}

答案 4 :(得分:0)

昨天以构建解决方案json = JSON.parse (data);的形式工作,但是现在另一个表单在Uncaught SyntaxError: Unexpected token <

行上给我一个错误(json = JSON.parse (data);

我不明白在表格上工作的原因而不是另一个表格!

在ajax.php中,我返回echo "true";

谢谢大家