フォーム送信を介して AJAX 呼び出しを試みています
形:
<form action="subscribe.php" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
<input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL" placeholder="Enter Email">
<input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div>
<p class="error"></p>
</form>
ジャバスクリプト:
var $form = $('#mc-embedded-subscribe-form'),
timer;
if($form.length > 0) {
$('#mc-embedded-subscribe').on('click', function(e){
var hasError = false,
emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/,
email = $("input.email").val(),
error = $('.error');
error.is(':visible') ? error.fadeOut("slow", checkEmail) : checkEmail();
function checkEmail() {
if (email == "") {
error.text('Enter an email').fadeIn();
$("#mce-EMAIL").focus();
hasError = true;
} else if(!emailReg.test(email)) {
$("#mce-EMAIL").focus();
error.text('Enter a valid email').fadeIn();
hasError = true;
}
}
if(hasError == true) { return false; }
$.ajax({
url: $form.attr('action'),
type: 'post',
data: {
email: $('#mce-EMAIL').val()
},
success: function(data) {
if(data === '1') {
console.log(data);
console.log('success');
launchSubscriptionPopup();
} else {
error.text('There was an error');
}
},
error: function(data) {
console.log(data);
}
});
e.preventDefault();
});
}
にsubscribe.php
サブスクライブ.PHP:
$email = $_REQUEST['email'];
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
// $insertdate = date("Y-m-d H:i:s");
// $db = db_connect();
// $query = $db->query("INSERT INTO newsletter_coupon_codes VALUES ('$insertdate', '$email', '1')");
echo 1;
}
die();
デシベル接続():
function db_connect() {
include('/home/includes/dbconnect.php'); // holds the blow variables
@ $db = new mysqli($dbhost, $dbuser, $dbpw, $dbname);
if (!$db) {
throw new Exception('Could not connect to database server');
}
else {
$db->autocommit(TRUE);
return $db;
}
}
これはすべて正常に機能します。AJAX 呼び出しが行われsubscribe.php
、AJAX 呼び出しに 1 が返されます。
ここで、電子メールと日付をデータベースに記録したいと思います。の 2 つの DB 行のコメントをsubscribe.php
外すと、AJAX 呼び出しが失敗します。何も返されません。DB エントリが作成されますが、1 が返されないため、JavaScript 呼び出しを続行できません。
subscribe.php
スタンドアロンを表示すると、それも機能します。問題ありません。DB エントリを追加し、1
.
subscribe.php
これに DB レイヤーを追加すると、AJAX リクエストに値 1 が返されない理由はありますか?