在php中调用jQuery函数(或修改javascript,以便php运行剩余的代码)

我在php中调用必要的jQuery函数时遇到了困难所以我将它们添加到了javascript中,但是我熟悉的方法(成功函数)阻止了php执行INSERT INTO和SELECT查询以外的任何操作。 我如何更改此脚本以便它完成php,和/或如何组合代码以便可以完成以下操作?

validation表格(男女单独规则)

如果validation成功:两个性别:parent.close_field(’notice’); (目前仅适用于javascript)

如果性别是女性:

  • 将信息INSERT到customer_info表中
  • 标识分配给此帐户的user_id
  • 将用户重定向到下一页(目前在php和javascript中)

如果性别是男性:

  • 生成电子邮件通知我该请求
  • 将信息INSERT到invite_requests表中
  • Echo消息给Men(目前在两者中;首选方法是在php中)
  • 关闭Fancybox iframe(目前仅适用于javascript)

我正在使用fancybox2和这个jQueryvalidation插件http://bassistance.de/jquery-plugins/jquery-plugin-validation/

使用Javascript

var $custInfo = $("#customer_info"); $(document).ready(function () { var validator = $custInfo.validate({ rules: {...}, messages: {...}, errorLabelContainer: "#messageBox", submitHandler: function () { $custInfo.ajaxSubmit({ success: function () { if ($('input[name=gender][value=female]').is(':checked')) { parent.close_field('notice'); window.location.href = "page1.html"; } else if ($('input[name=gender][value=male]').is(':checked')) { parent.close_field('notice'); parent.$.fancybox.close(); alert("This isn't available yet for men, but we'll send you an invitation as soon as it is"); } } }); } }); $custInfo.find("input[name=gender]").change(function () { if ($(this).val() == "male") { $custInfo.submit(); } }); }); 

PHP

 <?php //Start session and connection to database goes here //Function to sanitize values received from the form goes here $gender = $_POST['gender']; if ($gender==="female" ) { // INSERT information into customer_info table $qry = "INSERT INTO customer_info(fname, lname, gender, zip, email, phone, terms, security_question, security_answer, participating_retailers, notify_new_items, notify_promotions, priority1, priority2, priority3, priority4, priority5, gift_privacy, user_name, password, Quickfill) VALUES('$_POST[fname]','$_POST[lname]','$_POST[gender]','$_POST[zip]','$_POST[email]','$_POST[phone]','$_POST[terms]','$_POST[security_question]','$_POST[security_answer]','$_POST[participating_retailers]','$_POST[notify_new_items]','$_POST[notify_promotions]','$_POST[priority1]','$_POST[priority2]','$_POST[priority3]','$_POST[priority4]','$_POST[priority5]','$_POST[gift_privacy]','$user_name','".md5($_POST['password'])."','$_POST[Quickfill]')"; $result = @mysql_query($qry); if($result) { // Identifies user_id assigned to this account $qry="SELECT * FROM customer_info WHERE user_name='$user_name' AND password='".md5($_POST['password'])."'"; $result=mysql_query($qry); if($result) { if(mysql_num_rows($result) == 1) { session_regenerate_id(); $member = mysql_fetch_assoc($result); $_SESSION['SESS_USER_ID'] = $member['user_id']; $_SESSION['SESS_USER_NAME'] = $member['user_name']; session_write_close(); // Redirects user to the next page header("location: page1.html"); exit(); }else { //user_name failed header("location: login_failed.html"); exit(); } }else { die("Unable to access your account (Error Message 1)"); } }else { die("Unable to access your account (Error Message 2)"); } } // If Gender is Male else { // Notify us of request via email $sendto = "info@click2fit.com";$userfname = $_POST['fname'];$userlname = $_POST['lname'];$usermail = $_POST['email'];$gender = $_POST['gender'];$subject = "Invite Request - " . ($gender) . " "; // INSERT information into invite_requests table $qry = "INSERT INTO invite_requests(fname, lname, gender, zip, email, phone, terms, participating_retailers, notify_new_items, notify_promotions, priority1, priority2, priority3, priority4, priority5, gift_privacy, user_name, password, Quickfill) VALUES('$_POST[fname]','$_POST[lname]','$_POST[gender]','$_POST[zip]','$_POST[email]','$_POST[phone]','$_POST[terms]','$_POST[participating_retailers]','$_POST[notify_new_items]','$_POST[notify_promotions]','$_POST[priority1]','$_POST[priority2]','$_POST[priority3]','$_POST[priority4]','$_POST[priority5]','$_POST[gift_privacy]','$user_name','".md5($_POST['password'])."','$_POST[Quickfill]')"; $result = @mysql_query($qry); // Echo message to Men echo "

Click2Fit is not yet available for men, but we'll be sure to send an invitation as soon as it is

"; // Redirects user - This should be replaced with the function which closes the fancybox iframe header("location: home.html"); exit(); } ?>

重要的是要理解javascript是客户端语言(意味着它在用户的浏览器中运行),而php是服务器端语言(意味着它在您的服务器上运行)。 为了让javascript和php相互交互,你需要使用AJAX。

因为你已经在使用jQuery,我建议你查看他们的AJAX API 。 基本上,每次你想从你的javascript代码中调用一个php函数时,你都会有类似的东西:

 $.ajax({ type: "POST", /*usually POST, but it can also be GET and some other HTTP requests in certain browsers*/ url: "some.php", /*the url of the php which processes your data*/ data: { name: "John", location: "Boston" } /*the data you want to pass to the server. It will be contained in the $_POST array because of the 'type: "POST"' line above*/ }).done(function( msg ) { alert( "Data Saved: " + msg ); /*'msg' is what server send back to you while the contents of the function are what you do once the server finishes. You can change the variable name, msg, as well as the function contents to suit your needs */ });