在我的任何页面上,例如this one,当您单击“有问题”按钮左栏时,表单会通过jQuery Tools叠加显示。您填写表单,它提交到PHP脚本(本地脚本),如果它验证并提交,您将获得感谢或错误消息,具体取决于响应来自服务器。适用于FF,Safari和Opera,但不适用于IE或Chrome。 IE和Chrome只是去打印.ajax在带有脚本URL的空白页面上查找的返回消息。我必须有一些不正确的东西,因为即使我的跨域cURL ajax脚本工作但不是这个!这是代码
$(document).click(function() {
$.validator.methods.equal = function(value, element, param) {
return value == param;
};
var validator = $("#request").bind("invalid-form.validate", function() {
$("#summary").html("Your form contains " + validator.numberOfInvalids() + " error(s), please fix.");
}).validate({
//debug: true,
errorElement: "em",
errorContainer: $("#summary"),
errorPlacement: function(error, element) {
error.appendTo( element.parent("li"));
},
success: function(label) {
label.text("ok!").addClass("success");
},
submitHandler: function(form) {
$("#processing").show();
var dataString = $(form).serialize();
$.ajax({
type: $("#request").attr('method'),
url: form.action,
data: dataString,
clearForm: true,
success: function(data) {
if (data=="SuccessMail Sent") {
$("#formWrap, #supportHdln").hide();
$("#thankYou").html('<h2><span>Thank You</span> We have received your request.</h2><p>A Customer Service Representative from NinjaTrader will contact you shortly.</p>').fadeIn("slow");
} else {
$("#formWrap, #supportHdln").hide();
$("#error").html('<h2><span>Uh Oh</span> We are unable to process your request.</h2><p>Please make sure all fields were filled out correctly. If you are still having trouble, please <a href=\"mailto:support@ninjatrader.com?subject=Support Email\">email us</a></p>').fadeIn("slow");
}
}
});
return false;
},
rules: {
hs_customer_firstname: {
required: true,
minlength: 2
},
hs_customer_lastname: {
required: true,
minlength: 2
},
hs_customer_email: {
required: true,
email: true
},
confirmEmail: {
required: true,
email: true,
equalTo: "#hs_customer_email"
},
hs_customer_phone: {
required: false,
digits: true
},
hs_category: {
required: true
},
hs_customLargeTextField: {
required: true,
minlength: 20
},
math: {
required: true,
equal: <?php echo $randomNumTotal; ?>
}
},
messages: {
hs_customer_firstname: {
required: "Please Enter Your First Name",
minlength: "Your First Name Must be at Least 2 Characters"
},
hs_customer_lastname: {
required: "Please Enter Your Last Name",
minlength: "Your Last Name Must be at Leaset 2 Characters"
},
hs_customer_email: {
required: "Please enter your email address",
email: "Please enter a valid email address"
},
confirmEmail: {
required: "Please Confirm Your Email Address",
email: "Please Enter a Valid Email Address",
equalTo: "Please Enter the Same Email Address as Above"
},
hs_customer_phone: {
digits: "Numbers only"
},
hs_category: {
required: "Please Select a Category"
},
hs_customLargeTextField: {
required: "Please Leave a Comment",
minlength: "Your comment must be at least 20 characters"
},
math: {
required: "Please Solve the Problem",
equal: "Please Solve the Problem Correctly"
}
}
});
});
这是运行它的小PHP脚本
<?php
if(empty($_POST['hs_customer_firstname']) || empty($_POST['hs_customer_lastname']) ||
empty($_POST['hs_customer_email']) || empty($_POST['hs_category']) ||
empty($_POST['hs_customLargeTextField']) || empty($_POST['math'])) {
echo ('Success');
}
$headers = 'From: webmaster@ninjatrader.com' . "\r\n" .
'Reply-To: webmaster@ninjatrader.com' . "\r\n" .
$firstname = $_POST['hs_customer_firstname'] ;
//more like this
mail( "email@domain.com", "Support Request",
//$_POST fields
"From: $email");
if(mail($firstname, $lastname, $email, $category, $inquiry)) {
echo ('Mail Sent');
} else {
echo ('Error: Mail failed');
}
?>
答案 0 :(得分:0)
它与随机数验证有关,IE和Chrome不喜欢js代码。一旦我摆脱了这一点,并从表单页面中删除了带有叠加层的验证,将其作为单独的JS文件添加到父页面中。不知道为什么随机数总计不起作用。当我将PHP函数添加到父页面时,它在验证中没有触发JS错误,但是在正确添加它们时数字没有验证。哦,好吧,赢得一些失去一些。