0

I got a very strange problem, I thought this worked before but it doesn't any more. I dont even remember changing anything. I tried with an older jQuery library.

I got an error that says: http://i.imgur.com/H51wG4G.png on row 68: (anonymous function). which refer to row 68: var jsondata = $.parseJSON(data);

This is my ajax function I can't get my alert to work either because of this error. this script by the way is for logging in, so if I refresh my website I will be logged in, so that work. I also return my json object good as you can see in the image. {"success":false,"msg":"Fel anv\u00e4ndarnamn eller l\u00f6senord.","redirect":""}

When I got this, I will check in login.success if I got success == true and get the login panel from logged-in.php.

$('#login_form').submit(function()
{
    var login = $.ajax(
    {
        url: '/dev/ajax/trylogin.php',
        data: $(this).serialize(),
        type: 'POST',
    }, 'json');
    login.success(function(data)
    {
        var jsondata = $.parseJSON(data);
        console.log(jsondata);
        if(jsondata.success == true)
        {
            $.get("/dev/class/UI/logged-in.php", function(data) {
                $(".login-form").replaceWith(data);
            });
        }
        else
        {
            alert(jsondata.msg);
            $('#pwd').val('');
        }
    });
    return false;
});

Thank you.

4

3 回答 3

1

您的回复不是有效的 JSON。您会看到:“意外的令牌 <”。

这意味着您的响应包含意外的“<”,并且无法转换为 JSON 格式。

在将其转换为 JSONconsole.log(data) 之前放置一个。

于 2013-05-26T10:51:07.510 回答
1

如果response您在随附的屏幕截图中显示的内容是可以通过的,那么您的 PHP 脚本中存在生成JSON响应的问题。确保PHP生成此响应的脚本(或该文件中包含的任何其他脚本)未使用名为SITE_TITLE. 如果这些 PHP 文件中的任何一个需要使用该常量,请确保该常量SITE_TILE已在某处定义并包含在这些文件中。

可能发生的情况是响应生成PHP中涉及的文件之一可能已经以某种方式更改并开始使用成本常数而没有首先定义它,或者没有包括包含该常数的文件。JSONSITE_TITLE

或者,可能生成中涉及的文件JSON都没有改变,而是您的error_reporting设置可能已经改变,现在解释器在看到一些未定义PHP的常量时正在输出关卡文本。notice

解决问题

如果SITE_TITLE常量未定义,请定义它。如果SITE_TITLE常量是在其他文件中定义的,请将该文件包含在PHP生成响应的脚本中。

否则,我不建议这样做,请将您的error_reporting设置设置为忽略Notice.

于 2013-05-26T10:51:41.527 回答
0

你应该使用 login.done() ,而不是 login.success() :) Success 仅在 ajax() 函数内使用!不推荐使用成功对象函数,您只能将成功设置为 Ajax() 参数!

而且不需要解析数据,因为它已经是 Json 格式了!

jQuery 阿贾克斯

$('#login_form').submit(function()
{
    var login = $.ajax(
    {
        url: '/dev/ajax/trylogin.php',
        data: $(this).serialize(),
        type: 'POST',
    }, 'json');
    login.done(function(data)
    {
        var jsondata = data;
        console.log(jsondata);
        if(jsondata.success == true)
        {
            $.get("/dev/class/UI/logged-in.php", function(data) {
                $(".login-form").replaceWith(data);
            });
        }
        else
        {
            alert(jsondata.msg);
            $('#pwd').val('');
        }
    });
    return false;
});
于 2013-05-26T10:52:23.617 回答