未分配Javascript值

时间:2012-08-22 03:32:55

标签: javascript jquery ajax post

我在为fnamelname等分配值时遇到问题,在调用成功函数并将其发布到template/orderForm.php之前,这些值在页面上不存在。如果我例如console.log(fname)我得到一个空字段。

首先发生的事情是登录按钮提交它通过phpscripts / login.php检查数据库中的信息,成功后它会发布到另一个页面以获取表单数据,例如他们的名字等等是auto - 填充php echos。

$("#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 {

      }
    }

  });
});

2 个答案:

答案 0 :(得分:1)

尝试使用$('#fname').val()代替$('#fname').attr('value'),与其他人一样。

答案 1 :(得分:0)

我不知道你的HTML是怎么回事,所以这是我的猜测:

这一行:

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

包含你的html,其中包含id为fname的元素。

这是js:

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

应该是这样的:

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

在一个准备好的陈述或外面的东西。未在另一个侦听器的结果中定义。

这个链接解释了.live: http://api.jquery.com/live/

它注册了新插入的dom元素,因为你提供的基本监听器不会因为你的请求写入fname元素 - 这是一个假设,所以如果我在这里错了就不要大叫。