我有以下javascript函数
$("#formLogin").submit(function(e){
e.preventDefault();
var memberUserName = $(this).find("#memberUserName").val();
var memberOldPassword = $(this).find("#memberOldPassword").val();
alert(memberUserName);
alert(memberOldPassword);
var obj = {memberUserName: memberUserName, memberOldPassword: memberOldPassword};
var url = $(this).attr("action");
$.post(url, obj, function(r){
if(r.success) window.location.replace('http://www.example.org/memberAccount/memberDashboard');
else $('#errorMessageTop').fadeIn();
}, 'json')
})
当我发出警报时,memberOldPassword我得到了未定义。在我的表格中,我有提交,这是代码:
<input type="password" class="good_input" id="memberOldPassword" name="memberOldPassword" style="float:right;width:135px;"/><br />
以下是我的控制器的PHP代码:
public function loginCheck()
{
// set the validation rules
$this->form_validation->set_rules('memberUserName', 'Username', 'required|trim|encode_php_tags');
$this->form_validation->set_rules('memberOldPassword', 'Password', 'required|trim|encode_php_tags');
$this->form_validation->set_error_delimiters('<br /><p class=jsdiserr>', '</p><br />');
// if validation is passed
if ($this->form_validation->run() != FALSE)
{
$this->db->where('memberUserName', $this->input->post('memberUserName'));
$this->db->where('memberOldPassword', strtoupper(md5("EBOSS/".$this->input->post('memberOldPassword')."/EBOSS")));
$query = $this->membersModel->get();
if($query)
{
$data = array(
'memberID' => $query[0]['memberID'],
'memberUserName' => $query[0]['memberUserName'],
'memberOldPassword' => $query[0]['memberOldPassword'],
'memberEmail' => $query[0]['memberEmail'],
'isUserLoggedIn' => TRUE
);
$members = $query->result_array();
$this->session->set_userdata('currentMember',$data);
echo json_encode(array("success" => true));
} else {
echo json_encode(array("success" => false, "error" => "Wrong credentials"));
}
// form validation has failed
} else {
$errorMessage = "Wrong Username or passwrod!";
}
} // end of function loginCheck
我使用jQuery v1.7.2,PHP版本是5.39
任何人都知道为什么我在修改密码时会得到未定义的内容?
答案 0 :(得分:1)
检查您的HTML。密码真的在表单标签内吗? find(“#memberOldPassword”)真正返回了什么?控制它!
测试JavaScript:
$("#formLogin").submit(function(e){
e.preventDefault();
var memberOldPassword = $(this).find("#memberOldPassword").val();
alert(memberOldPassword);
})
更正HTML(警报输入值):
<form id="formLogin">
<input type="password" class="good_input" id="memberOldPassword" name="memberOldPassword" style="float:right;width:135px;"/><br />
<input type="submit" value="Submit"/>
</form>
错误的HTML(警报未定义):
<form id="formLogin" >
<input type="submit" value="Submit"/>
</form>
<input type="password" class="good_input" id="memberOldPassword" name="memberOldPassword" style="float:right;width:135px;"/><br />
答案 1 :(得分:1)
$(这个)显然没有引用表单,因为您使用的是id,您可能也会这样做
var memberOldPassword = $("#memberOldPassword").val();
答案 2 :(得分:0)
您需要发布服务器响应的示例。假设它是有效的JSON,它必须包含这样的成功属性:
{
success: ...
}
否则将是未定义的。
然而,查看您的代码,这可能是您正在寻找的内容:
$.post(url, obj).done(function(r) {
window.location.replace('http://www.example.org/memberAccount/memberDashboard');
}).fail(function(r) {
$('#errorMessageTop').fadeIn();
});
.done()
和.fail()
函数旨在处理成功和失败的具体情况。如果需要使用服务器响应,可以在回调函数中执行此操作,其中响应作为r
传递。