使用.Post()将JQ​​uery变量传递给PHP

时间:2011-07-18 01:26:46

标签: php jquery mysql .post

我正在尝试使用JQuery创建一个电子邮件订阅输入框,但由于某种原因,输入的电子邮件地址没有插入MySql数据库,任何人都可以帮助我吗?

以下是我在newsletter.js文件中的代码:

jQuery(function($){

var validateRegexps = {
    email: /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/,
    "default": /.{4}/ 
    }

if ($("#newsletter form").length == 0) return

var defaultMessage = $("#newsletter").attr("data-default")
var subscribedMessage = $("#newsletter").attr("data-subscribed")
var newsletterForm = $("#newsletter form")

 /* newsletter code */
function newsletter(send) {
        var subscribe = true
        newsletterForm.find('input[type="submit"]').val(subscribe ? "Sign Up" : "Unsubscribe")

        var email = newsletterForm.find('input[name="email"]')
        var check = true

        if (email.val() == defaultMessage || email.val() == subscribedMessage) {
            email.val("")
            if (!send) check = false
        } 

        if (check) {
            if(validateRegexps["email"].test(email.val())) {
                    // valid mail
                    email.removeClass("error")
                    if (send) {
                            $.post("php/newsletter.php",{add: email.val()},  function(data) {
                                    email.val(subscribedMessage)
                            });
                            email.val("sending")
                    }

            } else {
                    // invalid mail
                    email.addClass("error")
            }
        }


        return false
}

function restore(e) {
    var jqEl = $(e.currentTarget) 
    if (jqEl.val() == "") {
        jqEl.val(defaultMessage)
    }
    return true
}

function signUp() {
        return newsletter(false)
}

function signUpAndSend() {
        return newsletter(true)
}

newsletterForm.find('input[name="email"]').focus(signUp).focusout(restore)
newsletterForm.change(signUp)
newsletterForm.submit(signUpAndSend)

});

以下是我的newsletter.php文件中的代码:

require("config.php");

$db = mysql_connect($dbhost, $dbuser, $dbpassword);
mysql_select_db($dbdatabase, $db);

$subsql = "INSERT INTO subscribe(email) VALUES(".$_POST['add'].");";
mysql_query($subsql);

And here is the code in my other php page to display the input box:

<div id="newsletter" data-default="youremail@yourdomain.com" data-subscribed="Thank you for subscribing.">

<form action="#" method="POST">
<input type="text" name="email" value="youremail@yourdomain.com" />
<input type="submit" value="submit" />
</form>
<h2>Sign Up to Our Newsletter!</h2>

</div>

非常感谢任何帮助。非常感谢你提前!!!

1 个答案:

答案 0 :(得分:1)

哼!查看您的代码并不直接指向任何错误,但最明显的问题似乎是在INSERT查询中,电子邮件地址未包含在单引号中。请起草您的查询,如:

$subsql = "INSERT INTO subscribe(email) VALUES('" . $_POST['add'] . "');";

希望上面的INSERT应该可以正常工作。如果问题仍然存在,请尝试查明查询是否可能产生任何错误:

$subsql = "INSERT INTO subscribe(email) VALUES('" . $_POST['add'] . "');";
mysql_query($subsql);
if (mysql_error()) {
    echo mysql_error();
}

如果没有发现错误并且问题仍然存在,那么研究其他基础知识可能是有意义的,例如:

  1. “newsletter.php”中有$_POST['add']吗?
  2. 是否在“newsletter.php”中正确建立了MySQL连接?
  3. 是否存在任何未发送POST请求或可能使用空电子邮件地址发送的JavaScript问题?
  4. 希望这有帮助!