jQuery没有正确执行ajax请求

时间:2012-01-14 01:12:12

标签: jquery

我有另一个类似的脚本运行得很好,我不明白为什么这不起作用。这段代码有什么问题吗?

$("#lastname").keyup(function(event){
    var keyCode = event.keyCode || event.which;
    if(keyCode === 13) {
        passOnRegFront();
    }
    });
    $("#register").click(function() {
        passOnRegFront();
    });
function passOnRegFront() {
        var firstname = $("#firstname").val();
        var lastname = $("#lastname").val();
        var dataString = '&firstname=' + firstname + '&lastname=' + lastname;
        if(email=='' ||  password=='') {
            $('#success').fadeOut(400).hide();
            $('#error').fadeOut(400).show();
        } else {
            $.ajax({
                type: "POST",
                dataType: "JSON",
                url: "<?=base_url()?>index.php/home/passOnReg",
                data: dataString,
                json: {session_state: true},
                success: function(data) {
                if(data.registered == true) { // true means user is logged in.
                    $("#main1").hide();
                    $("#main1").load('<?=base_url()?>index.php/home/dashboard');
                }
            }
        });
        }
    }
});

1 个答案:

答案 0 :(得分:1)

当我浏览你的代码时,以下问题突然出现在我身上:

  • emailpassword变量未定义,根据上下文,我猜您可能会在此时考虑firstnamelastname。从您提到的其他脚本中复制并粘贴错误?

  • 在块的末尾有一个额外的});。也许这只是你没有展示的$(document).ready(function() {的结尾,但显然我不知道你有多少代码没有显示 - 因为你所展示的这是一个错误。< / p>

顺便说一句,如果你修复了缩进,它会更容易阅读和调试:乍看之下你似乎在.click()处理器里面创建了.keyup()处理程序 {{1}处理程序。

另外,如果您查看使用对象设置.ajax()调用的data属性,代码可能会更清晰。摆脱dataString,然后说:

...
data : { firstname : firstname, lastname : lastname },
...

(jQuery将为您创建适当的查询字符串,如the .ajax() doco中所述。)