我在为fname
,lname
等分配值时遇到问题,在调用成功函数并将其发布到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 {
}
}
});
});
答案 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元素 - 这是一个假设,所以如果我在这里错了就不要大叫。