У меня есть вызов AJAX на странице, где администраторы могут подписаться на e-sign. Когда кнопка (adminEsign_btn) нажата, это JQuery называется:Ajax Call Worked; Больше не работает
$("#adminEsign_btn").click(function(e){//admin esign submitted
e.preventDefault();
//validate esign
var valid = true;
if($.trim($('#adminSignature').val()).length < 3){
valid = false;
}
//action
if(valid === false){
$('#adminEsignError').html('<span class="error">You must agree to the statement and sign.</span>');
}
else{//validation passed, submit data
var schoolID = <?php echo $schoolProfile['schoolID']; ?>;
var signature = $('#adminSignature').val();
$('#adminEsignLoader').css({'display':'inline-block'});
$('#submitForm').attr("disabled","disabled");
$('#submitForm').val("Updating...");
$.ajax({
type: "POST",
url: 'bin/schoolProfile.saveEsign.php',
data: { schoolID:schoolID, signature:signature}
}).done(function(response) {
//$('#debug').html(response);
//alert(response);
if(response.indexOf('success') >= 0){//if 'success' exists in the response text
$('#submitForm').removeAttr("disabled");
$('#submitForm').val("Update School Profile");
$('#adminEsignLoader').hide();
//disable the e-sign
$('#adminAgree').attr("disabled","disabled");
$('#adminSignature').attr("readonly","readonly");
$('#adminEsign_btn').attr("disabled","disabled");
}
});
$('#adminEsignError').html('');
}
});
Я не написал исходный код, так что я не знаю точно, что происходит в заявлении, если:
if(response.indexOf('success') >= 0){//if 'success' exists in the response text
Но вызов не ожидает возврата, кроме эха успеха. Следующая страница PHP (schoolProfile.saveEsign.php) является то, что называется:
<?php
include($_SERVER['DOCUMENT_ROOT'] . '/includes/init.php');
$Page->clearance('Admin');
$Main->saveSchoolAdminEsign($_POST['schoolID'], $_POST['signature']);
echo 'success';
?>
ПРИМЕЧАНИЕ: $ Main инициализируется в init.php, а также составляет $ Page.
Этот код работал до сегодняшнего дня, когда я тестировал его снова. Предполагается, что данные будут опубликованы в schoolProfile.saveEsign.php и запустите функцию, чтобы сохранить идентификатор школы и подпись в базе данных mysql.
Я использовал функцию javascript alert(), чтобы опубликовать результаты «ответа» и всегда показывает код для всей текущей страницы (schoolProfile.edit.php).
Я запустил код в Chrome, и он показывает, что данные отправляются. Он имеет статус 302 - Найдено. Размер составляет 485 B (звучит разумно для двух переменных только с текстом), но под размером в Отладчике сети Chrome есть контент, а контент 0 B - пустой. Я не знаю, означает ли это, что данные не отправляются или что.
Я протестировал настройку переменной сеанса, чтобы узнать, сохраняется ли сеанс, и я не смог изменить его значение, поэтому это может быть признак того, что данные фактически не проталкиваются. Но когда я просматриваю заголовок для вызываемой страницы, он показывает 2 переменные - schoolID и подпись - со значениями.
Я новичок в отладчике сети Chrome, поэтому, если есть какие-либо другие вещи, которые я могу проверить или у кого есть какие-либо предложения, любая помощь будет оценена по достоинству.
EDIT: Я также проверял функции успеха и ошибки внутри вызова ajax, и успех всегда называется. Он снова возвращает весь код для текущей страницы (schoolProfile.edit.php).
Ваш сервер работает нормально? –
Да. У меня есть другие вызовы AJAX на других страницах, которые, похоже, работают нормально. Только этого нет. –
Что дает вам: 'alert (response);'? –