jQuery.post() Казалось бы, пропускается по той или иной причине
Я пытаюсь выяснить, почему звонок jQuery.post()
либо не извлекает данные, либо функция после извлечения не работает вообще.
У меня есть три файла в комплекте; файл HTML, файл JavaScript и файл PHP. HTML содержит модальный элемент, который я хочу, чтобы в конечном итоге всплыла кнопка "удалить".
JQuery видит щелчок и запускает функцию для $.on("click")
,
Тем не менее, когда я пытаюсь позвонить $.post
согласно отладке моего разработчика Chrome, он выполняет кучу обработок и действий с .post()
но не выдает моего предупреждения о том, что данные, которые я получаю из моего delete_prep.php, готовы к использованию для заполнения данных внутри модального подтверждения.
Я довольно новичок в использовании любого вида AJAX, и так как .post()
показано во многих других вопросах переполнения стека, которые я рассматривал в качестве рекомендуемой альтернативы использованию $.ajax()
Я подумал, что приведенного ниже кода будет достаточно, чтобы получить данные и затем получить предупреждение, в котором говорится "объект JSON" или "ассоциативный массив" или что-либо еще применимое. К сожалению, предупреждение даже не появляется.
Применимые фрагменты HTML
<button type="button" data-title="Delete" data-opid="<?php echo $operator['operator_id']; ?>" class="icon-btn delete">Delete</button>
<div class="modal-wrapper" id="delete_operator_modal">
<section class="modal">
<div class="modal-bar">
<button id="close_modal_button" class="close-button">×</button>
</div>
<div class="modal-content">
<h2>Delete Operator?</h2>
<p id="delete_operator_name">Default Message</p>
<p id="delete_operator_message">If this operator is deleted, their franchises will no longer have an
owner, and be marked 'For
Sale'.</p>
<footer class="modal-footer">
<button onclick="closeModal()" id="confirm_delete_button" class="primary button">Delete Operator</button>
<button onclick="closeModal()" id="cancel_delete_button" class="secondary button">Cancel</button>
</footer>
</div>
</section>
</div>
в скрипте документа, который будет переписан для JQUERY
var deleteButton = document.querySelector('.icon-btn.delete');
var closeButton = document.querySelector('.close-button');
var cancelButton = document.querySelector('#cancelButton');
Modal = document.querySelector('.modal-wrapper');
function openModal() {
Modal.classList.add('open');
}
function closeModal() {
Modal.classList.remove('open');
}
Скрипт внутри соответствующего файла JS
jQuery(function () {
// This will show the delete modal and populate it with the information from the record the last pressed button corresponds to
function showDeleteModal(id) {
// This is where the code that doesn't seem to be running begins
$.post(
'ajax_php/delete_prep.php', // Gets information for delete confirmation
{
id: id // Data that is used to run the SQL query
},
function (data) {
var operator = JSON.parse(data); // Converts to an object so that it can be used as an associative array
top.alert(typeof(operator)); // DEVELOPMENT checking to make sure it is an object
}
)
;
// END NON WORKING CODE
// Show the modal once the data is changed
$('#delete_operator_modal').addClass('open');
}
$('*[data-opid]').on("click", function () {
showDeleteModal($(this).attr("data-opid"));
});
$('#close_modal_button').on("click", function () {
// call function to close the modal that corresponds to the button that was clicked
});
});
И, наконец, delete_prep.php
<?php
require_once('obsured_path/initialize.php');
$operator = find_operator_by_id($id);
echo json_encode($operator);
1 ответ
Подведение итогов чата.
Были найдены две проблемы. Сначала Тайлер обнаружил, что у него есть файл.htaccess с некоторым правилом, которое заставляет запрос вернуть 403 Запрещено при попытке доступа к нему. Он удалил это, и 403 был решен.
Во-вторых, его сценарий ссылался на переменную, которая не была определена. После исправления, чтобы он указывал на $_POST['id'], предоставляемый из скрипта, он начал работать так, как он задумал.