Всю ночь я играл с тем, как этого добиться, но не могу понять. При нажатии я прошу вызов AJAX, чтобы открыть модальное окно и сделать вызов функции PHP. Я хочу, чтобы результаты этого вызова функции PHP открывались внутри модального окна.
Я переместил скрипт, попытался добавить его в сам запрос AJAX, попытался сделать .show на скрипте внутри PHP. Я что-то упустил, но мог бы помочь.
Я знаю, что функция PHP вызывается через AJAX, потому что в консоли я увижу результат. Однако модальное окно не открывается на странице. Сам мод не открывается
ЗВОНОК НАЖМИТЕ
<a href = "javascript:void(0)" class = "button seated-btn" onclick = "toptions('+val.wait_id+')" data-id = "'+val.wait_id+'">
АЯКС ВЫЗОВ
function toptions(){
jQuery.ajax({
type: 'post',
url: my_ajax.ajax_url,
data: {
action: 'options'
},
success: function (data) {
("#myModal").show()
;}
});
}
PHP-ФУНКЦИЯ
function options(){
global $wpdb;
global $available;
$check_availability = $wpdb->get_results($wpdb->prepare("SELECT `id` FROM mytablename "));
if (!empty($check_availability)){
foreach($check_availability as $available){echo "ID Number" . str_repeat(' ', 5) . $available->id. "<br>\n";
}
}
else {echo "No Available";};
?>
<!-- The Modal -->
<div id = "myModal" class = "modal">
<!-- Modal content -->
<div class = "modal-content">
<span class = "close">×</span>
<p>Some text in the Modal..</p>
</div>
</div>
<script>
jQuery('document').ready(function(){
// Get the modal
var modal = document.getElementById("myModal");
// Get the button that opens the modal
var btn = document.getElementById("myBtn");
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];
// When the user clicks on the button, open the modal
btn.onclick = function() {
modal.style.display = "block";
}
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
modal.style.display = "none";
}
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
}
});
</script>
<?php
}
HTML
<!-- The Modal -->
<div id = "myModal" class = "modal">
<!-- Modal content -->
<div class = "modal-content">
<span class = "close">×</span>
<p> <!-- HERE IS WHERE I WANT THE PHP RESULTS TO SHOW--></p>
</div>
</div>
он вызывает функцию PHP
что вы получаете в action
в function options(){}
Что ты имеешь в виду? в действии он вызывает функцию PHP, которая работает. Чего он не делает, так это запускает модальное окно. Однако я получаю правильный ответ в консоли.
что ты видишь внутри консоли? Также этот модал находится на какой странице вызывающей страницы?
подождите, вы отправляете обратно html для модального окна, а также javascript для его активации? У меня был бы модал уже в html, и я бы использовал ответ ajax, чтобы заполнить и активировать его. Я лично отправляю только json vis ajax.
К вашему сведению, ваш ajax не вызывает функцию php. Вы совершенно не поняли, почему используется ajax: php выполняется только на сервере, а не в браузере. ajax аналогичен отправке формы обратно на сервер, только в фоновом режиме, чтобы ваша страница не обновлялась. Ваше действие должно указывать на URL. Взгляните на исходный код html в вашем браузере; вы не увидите php-код, потому что он был проанализирован на сервере и не существует к тому времени, когда ваш браузер отображает html.
@timmorton спасибо, тогда какое решение / лучший способ? Я продолжаю изменять код, чтобы следовать тому, как другие предложили, что, как мне кажется, отодвигает его дальше. Когда вы упоминаете наличие модального окна в HTML?
Попробуйте следующий код.
Вам нужно добавить id
в тег <p>
, где вы хотите добавить ответ php от ajax.
АЯКС ВЫЗОВ
function toptions(){
jQuery.ajax({
type: 'post',
url: my_ajax.ajax_url,
data: {
action: 'options'
},
success: function (data) {
$("#myModal").show();
$("#my-data").html(data); //Add this line
}
});
}
HTML
<div id = "myModal" class = "modal">
<!-- Modal content -->
<div class = "modal-content">
<span class = "close">×</span>
<p id = "my-data"> <!-- HERE IS WHERE I WANT THE PHP RESULTS TO SHOW--></p>
</div>
</div>
Спасибо за помощь! Это имеет смысл с идентификатором в теге <p>. При этом сама модель вообще не открывается. Меня интересует запуск модального окна и его скрипта, если он у меня в нужном месте внутри функции PHP, и если при вызове функции PHP будет ли он запускать скрипт с HTML?
Чтобы отобразить modal , в успешном обратном вызове попробуйте заменить $("#myModal").show();
на $("#myModal").modal('show');
где вы используете
action: options
в функции PHP ??