У меня есть несколько файлов php, которые разделены на части, например, tillbody.php имеет тег html до тега body, затем у меня есть navbar.php и так далее. Я включаю его в index.php для лучшего обзора, вот код.
<?php
include ('pages/tillBody.php');
include ('pages/navbar.php');
// Set the default name
$ac = 'default.php';
// Specify some disallowed paths
$disallowed_paths = array('tillBody', 'navbar', 'footer');
if (empty($_GET['ac'])){
$_SESSION["loggedin"] = false;
unset ($_SESSION['userstatus']);
unset ($_SESSION['loggedin']);
unset ($_SESSION["userfn"]);
unset ($_SESSION["userln"]);
unset ($_SESSION["useremail"]);
unset ($_SESSION["id"]);
session_unset();
session_destroy();
}
if (!empty($_GET['ac'])) {
$q = basename($_GET['ac']);
// If it's not a disallowed path, and if the file exists, update $action
if (!in_array($q, $disallowed_paths) && file_exists("pages/{$q}.php"))
{
$ac = $q.".php";
}
}
// Include $action
include("pages/$ac");
include("pages/footer.php");
?>
TillBody.php имеет все файлы js, включая проверку. и ac - параметр запроса, я постоянно меняю его, но весь нижний колонтитул верхнего колонтитула и другие страницы php остаются такими же. Проблема в том, что на некоторых страницах есть модальные окна начальной загрузки, которые поступают с сервера через ajax с использованием эхо, когда эти модальные окна рендерит, эти файлы js не влияют на него, потому что тилбоди загружается, когда сайт открывается, а проверка не видит модальный ввод, поэтому проверка не выполняется для проверки модальных окон . Я знаю, что для решения этой проблемы мне нужно снова перезагрузить головную часть. может кто-нибудь помочь мне, как я могу решить эту проблему. Допустим, пользователь нажимает кнопку, и эта кнопка вызывает ajax, а ajax вызывает модальную страницу php, и эта страница php имеет это модальное окно.
<?php
if (!empty($_POST['id'])){
$id = $_POST['id'];
// connection to the Ddatabase
$servername = "*******";
$username = "*******";
try {
$db = new PDO("mysql:host=$servername;dbname=******", $username, "********");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$id = trim($id);
$id = stripslashes($id);
$id = htmlspecialchars($id);
$id = (int)$id;
$query = "SELECT dou.businessName, dou.businessAddress, wp.discount, wp.dealitem, wp.expirydate,
wp.description, m.* FROM dineOwnerUser AS dou INNER JOIN webpromo AS wp ON dou.id = wp.ownerid
INNER JOIN menu AS m ON dou.id = m.ownerid
WHERE dou.id = ?";
$statement = $db->prepare($query);
$statement->execute(array($id));
$result = $statement->fetch(PDO::FETCH_ASSOC);
echo"<div class='modal-header'>";
echo"<button type='button' class='close' data-dismiss='modal'>×</button>";
echo"<h2 class='modal-title text-center' style='color:#8f0000d6'>Report to ".$result['businessAddress']."</h2>";
echo"</div>";
echo"<div class='modal-body'>";
echo"<div class='alert alert-danger hidden' id='robotError'></div>";
echo"<div class='alert alert-success hidden' id='success'></div>";
echo"<form id='complaintForm'>";
echo"<div class='form-group'>";
echo"<label class='control-label' for='complaintAbout'>Report / Complaint about* :</label>";
echo"<input type='text' class='form-control' id='complaintAbout' placeholder='Report / Complaint about' name='complaintAbout'>";
echo"<div class='alert alert-danger hidden' id='complaintAbouterrbox'></div>";
echo"</div>";
echo"<div class='form-group'>";
echo"<label class='control-label' for='complaintDetail'>Report / Complaint detail* :</label>";
echo"<textarea type='text' rows='5' class='form-control' id='complaintDetail' placeholder='Report / Complaint detail' name='complaintDetail'></textarea>";
echo"<div class='alert alert-danger hidden' id='complaintDetailerrbox'></div>";
echo"</div>";
echo"<div class='form-group'>";
echo"<label class='control-label' for='complainerEmail'>Your email id* :</label>";
echo"<input type='email' class='form-control' id='complainerEmail' placeholder='Your email id' name='complainerEmail'>";
echo"<div class='alert alert-danger hidden' id='complainerEmailerrbox'></div>";
echo"</div>";
echo"<div class='form-group'>";
echo"<div class='g-recaptcha' data-sitekey='6LdZU0QUAAAAABUUQVjOQLbRy6DVMP0kZuOPjg8B'></div>";
echo"</div>";
echo"<button type='button' id='complaintsubmit' class='btn btn-primary btn-block'>Submit <span id= $id></span></button>";
echo"</form>";
echo"</div>";
echo"<div class='modal-footer'>";
echo"<button type='button' class='btn btn-default' data-dismiss='modal'>Close</button>";
echo"</div>";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
$db = null;
exit;
}
?>
снова я повторяю, пожалуйста, помогите мне. Эти модальные окна поступают с сервера после загрузки тега заголовка, поэтому код проверки не видит поле ввода, поэтому, когда эти модальные окна отображают, сценарий проверки не проверяет это. Я использую $ (
document ).ready(function() {
validation code;
});//this works for other pages which are already present in DOM when body loads but other pages which comes later from server it does not validate.
Спасибо, что ответили мне @kuromoka, здесь я даю вам ссылку на свой предыдущий вопрос, в конце вопроса вы можете найти код проверки, но я использую тот же код. stackoverflow.com/questions/52490500/…
Изменится ли ваш результат, если вы попробуете такой код? $(document).on("keyup", "#complaintAbout", function(){
@kuromoka большое спасибо, теперь он отлично работает, большое спасибо. еще один вопрос, который у меня есть. У меня есть ссылка google recaptcha js в том же разделе заголовка, и у меня это тоже в модальном режиме, возникает такая же проблема, поэтому для ее решения я поставил этот <script async src = "googletagmanager.com/gtag/js?id=UA- *******"> </script>. внутри модального, но это не подходящее решение. Можете ли вы сказать мне, как я могу перезагрузить этот js-скрипт, когда модальный запуск через ajax со страницы php?
вы можете поставить ответ как ответ, я проверю его как ответ, и вы получите очки :)
Я только что поставил ответ как ответ!






Чтобы прикрепить динамические модальные окна начальной загрузки, вы можете использовать .on().
Этот метод может присоединять к DOM события, добавленные после загрузки страницы.
http://api.jquery.com/on/
На основе это ваши коды вы можете получить ожидаемые результаты, как показано ниже.
$(document).on("keyup", "#complaintAbout", function(){
// validation code;
});
можно часть
validation code;показать?