Использование.Post() для передачи переменной JQuery в PHP
Я пытаюсь создать поле ввода подписки по электронной почте с помощью 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 ответ
Хм! Просмотр вашего кода напрямую не указывает на какие-либо ошибки, но наиболее очевидная проблема, по-видимому, заключается в запросе INSERT, что адрес электронной почты не заключен в одинарные кавычки. Пожалуйста, напишите ваш запрос как:
$subsql = "INSERT INTO subscribe(email) VALUES('" . $_POST['add'] . "');";
Надеемся, что вышеупомянутая вставка должна работать нормально. Если проблема все еще существует, попробуйте выяснить, может ли запрос генерировать какие-либо ошибки:
$subsql = "INSERT INTO subscribe(email) VALUES('" . $_POST['add'] . "');";
mysql_query($subsql);
if (mysql_error()) {
echo mysql_error();
}
Если ошибок не обнаружено и проблема все еще существует, возможно, имеет смысл изучить другие основы, например:
- Является
$_POST['add']
доступно в "newsletter.php"? - Правильно ли установлено соединение с MySQL в "newsletter.php"?
- Есть ли какая-либо проблема с JavaScript, из-за которой запрос POST не отправляется вообще или может быть отправлен с пустым адресом электронной почты?
Надеюсь это поможет!