我想验证表单,然后使用$ .ajax发送值。但它显示未定义的索引: is_ajax 。为什么它没有得到form_data?为什么会发生?应该做些什么改变? 这是我的剧本
function validateForm()
{
var oldPassword = document.forms["dsettings"]["oldPassword"].value;
var newPassword = document.forms["dsettings"]["newPassword"].value;
var retypePassword = document.forms["dsettings"]["retypePassword"].value;
if (document.forms["dsettings"]["oldPassword"].value == null || oldPassword == "") {
alert("Enter old password");
return false;
}
else if (document.forms["dsettings"]["newPassword"].value == null || newPassword == "") {
alert("Enter new password");
return false;
}
else if (document.forms["dsettings"]["retypePassword"].value == null || retypePassword == "") {
alert("Retype new password");
return false;
}
else if ( newPassword != retypePassword) {
alert("Retype new password correctly");
return false;
}
else
{
var action = $("#dsettings").attr('action');
var form_data = {
oldPassword: $('#oldPassword').val(),
newPassword: $('#newPassword').val(),
is_ajax: 1
};
$.ajax({
type: "POST",
url: action,
data: form_data,
success: function(response)
{
if(response == "success")
$("#message").html('<p class="success">Successfully changed password!</p>');
else if(response == "wrong_old_password")
{
$("#message").html('<p class="error">Wrong old password!type again!</p>');
}
else
{
$("#message").html('<div class="error">update error.Try again! !</div>');
}
}
});
}
}
我的HTML代码
<button type="submit" id="submit" name="submit" onclick="return validateForm()" class="form-submit" >submit</button>
和php代码
<?php $is_ajax = $_REQUEST['is_ajax'];
// some codes ?>
答案 0 :(得分:1)
由于这似乎是你的第一篇文章并且非常难看,你需要清理它(这也不完美!)
提供尽可能多的数据e。克
<强> HTML 强>
<form action="fakeurl.com" method="post" name="dsettings" id="dsettings" >
<ul>
<li>Old Password: <input type="password" name="oldPassword" /></li>
<li>New Password: <input type="password" name="newPassword" /></li>
<li>Retype New Password: <input type="password" name="retypePassword" /></li>
<li><input type="submit" name="submit" value="Change Password" /></li>
<li><div id="message"/></li>
</ul>
</form>
<强>的Javascript 强>
$(document).ready(function(){
$('#dsettings').on('submit',function(event){
changePassword(this)
event.preventDefault();
});
});
function validateChangePassword(frm){
var oldPassword=frm["oldPassword"].value
var newPassword=frm["newPassword"].value
var retypePassword =frm["retypePassword"].value;
if (oldPassword.trim()=="") {
$('#message').html("<p class='error'>Enter old password</p>");
return false;
}
else if (newPassword.trim()=='') {
$('#message').html("<p class='error'>Enter new password</p>");
return false;
}
else if (retypePassword.trim() == "") {
$('#message').html("<p class='error'>Retype new password</p>");
return false;
}
else if ( newPassword != retypePassword) {
$('#message').html("<p class='error'>Retype new password correctly</p>");
return false;
}
else
return true;
}
function changePassword(frm){
if(validateChangePassword(frm)){
var url = $(frm).attr('action');
var data = {
oldPassword: $(frm).find('input[name="oldPassword"]').val(),
newPassword: $(frm).find('input[name="newPassword"]').val(),
retypePassword: $(frm).find('input[name="retypePassword"]').val(),
is_ajax: 1
};
ajaxPost(url,data);
}
return false;
}
function ajaxPost(post_url,post_data){
$.ajax({
type: "POST",
url: post_url,
data: post_data,
success: function(response)
{
if(response == "success")
$("#message")
.html('<p class="success">Successfully changed password!</p>');
else if(response == "wrong_old_password")
{
$("#message")
.html('<p class="error">Wrong old password!type again!</p>');
}
else
{
$("#message")
.html('<div class="error">update error.Try again! !</div>');
}
}
});
}
可能出现的问题
避免使用自定义js和jquery mix 我怀疑你为元素提供了任何id,例如$(&#39;#oldPassword&#39;)。val()
表格validation有一个很好的插件,使用一个
答案 1 :(得分:0)
尝试使用参数:
更改函数调用的代码 function validateForm(e) {
e.preventDefault();
在这里:
<button type="submit" id="submit" name="submit" onclick="validateForm(this); return false;" class="form-submit" >submit</button>
答案 2 :(得分:0)
在 validateForm 函数调用之前包含jquery-1.4.3.min.js文件。
<input type="button" name="submit" value="Change Password" onclick="validateForm()" />
答案 3 :(得分:0)
根据你在评论中给出的答案,几乎可以肯定的是:
validateForm()
功能失败,$.ajax
永不运行要解决此问题:
type="button"
。一旦弄清楚错误是什么,你应该:
onclick
处理程序并且不引人注意地设置事件preventDefault()
来阻止默认提交事件$(function () {
$("#submit").click(function (e) {
e.preventDefault();
validateForm();
});
});