我一直试图为我的网页做一个ajax表单。
将信息发送到 register.php
以形成检查流程。
如果确定,则会将其添加到数据库中。
问题是:
第一条记录始终正常运作。但是,如果我尝试将另一条记录添加到数据库中,则会出现 parsererrorDetails : SyntaxError: Unexpected end of input
错误。
如果数据库中已存在当前信息,则将错误消息输出到屏幕。但是,如果我尝试发送另一条记录,则会出现同样的错误。
我认为在提交第一个数据之后我无法获得第二个数据而不是作为JSON返回。
这是我的代码。任何有用的帮助。
服务器端/ register.php
我的 header('Content-type: application/json');
位于顶部。
try {
// local db connection
$conn = new PDO('mysql:host=localhost;dbname=db_trop@Dubai;charset=utf8','root','mysql');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if (isset($_POST)) {
// CHECK IF PASSWORD ALREADY IN USE
$objP = clear(strtoupper($_POST['objPass'])); // Get Ajax Data
// $stmt = $conn->prepare('SELECT Id,PassNumber FROM tblRecords WHERE PassNumber = ?');
// $stmt->execute(array($objP));
$stmt = $conn->prepare('SELECT Id,PassNumber FROM tblRecords WHERE PassNumber = :passnum');
$stmt->bindParam(':passnum', $objP);
$stmt->execute();
$PassResult = $stmt->fetchAll();
// (PDO::FETCH_ASSOC)
if($PassResult) {
// IF THE PASSWORD FAILS
$response_array['status'] = 'fail';
$response_array['message'] = 'Parola Kullanılıyor';
echo json_encode($response_array);
die();
} else {
// ADD DATA TO DATABASE
$fTerms = intval($_POST['objTerms']);
$fNameSurname = clear(strtoupper($_POST['objNameSurname']));
$fMail = clear($_POST['objEmail']);
$fGsm = clear(intval($_POST['objGsm']));
$fAddress = clear(strtoupper($_POST['objAdres']));
$DateTime = date('d-m-Y h:i:s');
if($fTerms==1) {
// SQL
$SqlQuery = "INSERT INTO tblRecords(NameSurname, Email, Gsm, Address, PassNumber,DateAdded, IsChecked)
VALUES (:fNameSurname, :fMail, :fGsm, :fAddress,:objP, :DateTime,:fTerms)";
// RECORDS
$addRecords = $conn->prepare($SqlQuery);
$addRecords->bindParam(':fNameSurname', $fNameSurname, PDO::PARAM_STR);
$addRecords->bindParam(':fMail', $fMail, PDO::PARAM_STR);
$addRecords->bindParam(':fGsm', $fGsm, PDO::PARAM_INT);
$addRecords->bindParam(':objP', $objP, PDO::PARAM_STR);
$addRecords->bindParam(':fAddress', $fAddress, PDO::PARAM_STR);
$addRecords->bindParam(':DateTime', $DateTime, PDO::PARAM_STR);
$addRecords->bindParam(':fTerms', $fTerms, PDO::PARAM_STR);
$addRecords->execute();
// END OF RECORD PROCESS
if ($addRecords) {
$response_array['status'] = 'success';
$response_array['message'] = 'BRAVO';
$conn = null;
} else {
$response_array['status'] = 'fail';
$response_array['message'] = 'OLMADI';
$conn = null;
}
} else {
die();
}
}
}
和 Client Side / main.js
$("#register").submit(function (event, request) {
var password = $(this).find('input[name="objPassword"]').val();
var namesurname = $(this).find('input[name="objNameSurname"]').val();
var email = $(this).find('input[name="objEmail"]').val();
var gsm = $(this).find('input[name="objGsm"]').val();
var adres = $(this).find('input[name="objAddress"]').val();
var termsOk = $(this).find('input[name="objAcceptTerms"]').val();
var formURL = $(this).attr("action");
var postMessage;
if (postMessage) {
postMessage.abort();
}
var postData = {"objPass": password, "objNameSurname": namesurname, "objEmail": email, "objGsm": parseInt(gsm), "objAdres": adres, "objTerms": termsOk };
postMessage = $.post(formURL, postData, function (data) {
$('#register').trigger("reset");
})
.done(function(data) {
var defaultText = '';
if(data.status == 'success'){
$( ".info-row span" ).html(data.message);
$("#register").find('input[name="objPassword"]').val('');
$("#register").find('input[name="objNameSurname"]').val('');
$("#register").find('input[name="objEmail"]').val('');
$("#register").find('input[name="objGsm"]').val('');
$("#register").find('input[name="objAddress"]').val('');
$("#register").find('input[name="objAcceptTerms"]').val('');
$('input:checkbox').removeAttr('checked');
$('input').removeClass("error");
$('input[type=text]').focus(function() {
defaultText = $(this).val();
$(this).val('');
$( ".info-row span" ).html("");
});
// $('#register').trigger("reset");
console.log(data);
} else if(data.status == 'fail'){
$( ".info-row span" ).html(data.message);
$("#register").find('input[name="objPassword"]').val('');
$("#register").find('input[name="objNameSurname"]').val('');
$("#register").find('input[name="objEmail"]').val('');
$("#register").find('input[name="objGsm"]').val('');
$("#register").find('input[name="objAddress"]').val('');
$("#register").find('input[name="objAcceptTerms"]').val('');
$('input:checkbox').removeAttr('checked');
$('input').removeClass("error");
$('input[type=text]').focus(function() {
defaultText = $(this).val();
$(this).val('');
$( ".info-row span" ).html("");
});
console.log(data);
// $('#register').trigger("reset");
}
}) .fail(function (jqXHR, textStatus, errorThrown) {
alert(JSON.stringify(textStatus));
// $( ".info-row span" ).html(textStatus);
console.error("Error: " + textStatus + "Details : " + errorThrown);
// console.error("Error: " + textStatus + "Details : " + errorThrown);
}) .always(function(data) {
$('#register').trigger("reset");
});
event.preventDefault();
});
我想做的是:
用户可以连续输入他们的信息,并在每个表单提交后我想在屏幕上显示错误消息(现在正在工作,但在首次提交后无法正常工作。)
由于