2012-08-22 38 views
-1

我在为fnamelname等指定值时出现问题,直到成功函数被调用并且它会发布到template/orderForm.php,这些在页面上不存在。如果我例如console.log(fname)我得到一个空的领域。未赋值的Javascript值

发生的第一件事是在登录按钮提交它通过phpscripts/login.php检查数据库的信息,它成功后发布到另一个页面以获取表单数据,例如它们的名称等自动填充php回声。

$("#loginSubmit").click(function() { 
    var username = $("#username").val(); 
    var password = $("#password").val(); 
    $.ajax({ 
    type: "POST", 
    url: "phpscripts/login.php", 
    dataType: 'text', 
    data: { 
     username: username, 
     password: password 
    }, 
    success: function(data){ 
     if(data == 'worked') { 
     $("#loginForm").hide(500); 
     $("#loginBtn").hide(500); 
     $("#registerBtn").hide(500); 
     $("#forgotPasswordBtn").hide(500); 
     $.post('template/orderForm.php', function(data) { 
      $('#approveData').html(data); 
      $("#updateInfo").click(function() { 
      var fname = $('#fname').attr('value'); 
      var lname = $('#lname').attr('value'); 
      var address = $('#address').attr('value'); 
      var city = $('#city').attr('value'); 
      var state = $('#state').attr('value'); 
      var zip = $('#zip').attr('value'); 
      var phone = $('#phone').attr('value'); 
      console.log(fname); 
      $.ajax({ 
       type: "POST", 
       //change to update script that is in myaccount.php 
       url: "phpscripts/update.php", 
       data: { 
       fname: fname, 
       lname: lname, 
       address: address, 
       city: city, 
       state: state, 
       zip: zip, 
       phone: phone 
       }, 
       success: function(){ 
       //do nothing 
       } 

      }); 
      }); 
     }); 


     } 
     else { 

     } 
    } 

    }); 
}); 
+0

是否有一个原因,为什么你不使用$('#fname')。val()在该updateInfo中点击侦听器? (顺便说一句,这将有助于看到html) –

+0

小费:如果没有别的东西,你不需要'else' ... – elclanrs

+0

我想出了这个问题,有多个ID是fname,lname等等这个页面,我一开始并没有看到它们,因为它们跨多个php包含。 – Jeff

回答

1

尝试$('#fname').val()代替$('#fname').attr('value'),并与其他人相同。

+0

我试过用$('#fname').val()和$('#fname')。prop('value') – Jeff

+0

@Jeff你应该使用'.val()'来访问这个值,使用输入不会更改属性“值”的内容。 – xdazz

0

我不知道发生了什么事情与你的HTML所以这里是我的猜测:

这条线:

$('#approveData').html(data); 

包含你的HTML里面有与FNAME的ID的元素。

这JS:

$("#updateInfo").click(function() { ... }); 

应该是这样的:

$("#updateInfo").live('click', function() { ... }); 

而且在一个现成的语句或某事在外面。未在另一个侦听器的结果中定义。

此链接解释.live: http://api.jquery.com/live/

它注册新插入的地方为你的基本监听器会向您提供不中频FNAME元素是由你的要求写在DOM元素 - 一个假设,所以不要嚷嚷如果我在这里错了。

+0

您显示的'.click(function(){})'和'.on('click',function(){})'语法是等价的。你是否试图推荐委托事件处理作为'.on()'的其他语法之一? – nnnnnn

+0

你是对的,如果我现在正确回忆 - .live是我认为我所指的,因为点击将被转换为on('click'自动无论如何......但OP说他解决了,所以我想这是现​​在无关 –

+0

'.live()'被弃用 - '.on()'可以做与'.live()'做的相同的事情,如果你传递给它正确的参数,jQuery doco涵盖了细节。 – nnnnnn