2012-01-14 136 views
-1

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

$("#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'); 
       } 
      } 
     }); 
     } 
    } 
}); 
+0

有至少一个请求被发送?如果这样的请求是正确的?它返回什么? – PeeHaa 2012-01-14 01:14:57

+0

什么都没有发送。 – 2012-01-14 01:22:22

+0

您是否测试过通过执行'alert()'或'console.log()'获得条件的'else'部分。网页上是否有任何错误? – PeeHaa 2012-01-14 01:23:40

回答

1

下面的问题我跳了出来,我通过你的代码脱脂:

  • emailpassword变量没有定义,并从我猜的背景下,你可能打算firstnamelastname在那时候。从你提到的其他脚本复制和粘贴错误?

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

顺便说一句,如果你固定缩进它会更容易阅读和调试:乍一看似乎正在创建内部的.keyup()处理程序.click()处理器

另一方面,如果您查看使用对象来设置.ajax()调用的data属性,代码可能会更清晰。摆脱dataString,只是说:(jQuery将创建适当的查询字符串,你在the .ajax() doco描述)

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