jQuery селектор в комплекте php файл не работает - PullRequest
0 голосов
/ 30 марта 2020

Я сделал простой веб-сайт для управления и отображения элементов. Для моей проблемы достаточно знать, что есть 3 файла:

  1. admin-dashboard.php, которые отображают элементы и функции администратора (уменьшить количество, увеличить e cc.)

<?php
	include("includes/header.php");
	include("dbqueries/db-connection.php");
	include("includes/alerts.php");
?>
...
dashboard-utilities.js, который содержит все функции JavaScript для реализации пункта 1

...
// Reduce quantity button script
function reduceQuantity(item) {
	$.ajax({
	    method: 'get',
	    url: '../dbqueries/reduceQuantity.php',
	    data: {
	        'current_item': item,
	    },
	    success: function() {
	    	//alert("Quantità di " + "\"" + item + "\"" + " diminuita!");
	    	$('#reduceqty-modal').modal('show'); 
	    	// Reload page after closing the modal alert
	    	$('#reduceqty-modal').on('hidden.bs.modal', function () {
	    	 	window.location.reload();
	    	})
	    }
	});
}
...
alerts.php, который будет содержать все модальные оповещения bootstrap для отображения при успешном выполнении операции (т. Е. "Количество обновлено!")

<!-- Reduce quantity modal -->
<div id="reduceqty-modal" class="modal" tabindex="-1" role="dialog">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">Quantità ridotta</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <p>Modal body text goes here.</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-primary">Save changes</button>
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>
...

Таким образом, проблема в том, что часть "success" функции reduceQuantity не работает. В частности модал не отображается.

Я предположил, что jQuery не может найти его селектор, потому что он находится во включенном файле (alerts.php). Я так думаю, потому что, если я помещаю код оповещения прямо в основной файл admin-dashboard.php, все работает.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Похоже, что функция reduceQuantity() не может найти модальный элемент, потому что функция работает до того, как элемент HTML был проанализирован. Это может быть связано с тем, что вам нужно обернуть JQuery в $(document).ready(function(){}) или включить Javascript в конец файла admin-dashboard.php (перед закрывающим тегом </body>), а затем поставить alerts.php вверху, чтобы его можно было проанализировать до запуска Javascript. Возможно, вам придется сделать обе эти вещи.

0 голосов
/ 30 марта 2020

... Проблема была связана с сервером. Файл alerts.php не имеет правильных разрешений и правильного владельца. Я заметил это, когда вы сказали, что это, вероятно, не было на самом деле.

Извините, что потратили ваше время, спасибо всем!

...