Здравствуйте.
Можно ли так сделать?
Есть такая структура.
<div id="wrappep" class="wrappep">
<div id="1">...</div>
<div id="2">...</div>
<div id="3">...</div>
</div>
При нажатии на любой блок значение id передается в скрипт php, а скрипт php выполняется на этой же страницы исходя из этого значения.
пробую так:
</script>
var link;
$('#wrappep').on('click', 'a', function (event) {
link = $(this).parent().attr('id');
})
</script>
А как дальше передать в php и можно ли?
$zap = mysql_query("SELECT * FROM `region` WHERE `country_id` = '/*сюда переменную*\'");
Верстка
<div id="wrappep" class="wrappep">
<div class="some_class" id="1" data-id="что то">...</div>
<div class="some_class" id="2" data-id="что то">...</div>
<div class="some_class" id="3" data-id="что то">...</div>
</div>
JS
$(document).on('.some_class', 'click, function (e) {
var link = $(this).data('id');
$.ajax({
type: 'post',
data: {'link': link},
url: '/path/to/script.php',
success: function(data){
console.log('передал '+link+' получил '+data)
}
});
});
})
PHP (script.php)
return mysql_query("SELECT * FROM `region` WHERE `country_id` = $_POST['link']");
Спасибо попробую. Меня смущает то что php работает на стороне сервера, и будет ли это все работать на одной странице.
Т.е. страница уже прогрузилась, скрипт php сработал, я нажал на div, сработает ли php на этой же странице?
нит. выноси логику в другой файл и там обработай запрос, потом вернешь аяксом и на стороне js обработаешь как надо
# erricss (05.06.2019 / 05:09)
я нажал на div, сработает ли php на этой же странице?
Сработает, только обработку xhr запроса надо вынести выше вывода html
пример (+/-)
// С БД йето не нада
$region = [
4 => [
'country_id' => '4',
'name' => 'Афганистан',
'mainland' => 'Азию',
],
20 => [
'country_id' => '20',
'name' => 'Андорра',
'mainland' => 'Европу',
],
44 => [
'country_id' => '44',
'name' => 'Багамы',
'mainland' => 'Америку',
],
];
if (!empty($xhr = filter_input(INPUT_SERVER, 'HTTP_X_REQUESTED_WITH', FILTER_DEFAULT))
&& strtolower($xhr) == 'xmlhttprequest'
&& $id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT)) {
// Йето заменить на запрос к БД
echo json_encode($region[$id]);
exit;
}
echo '<html>
<head>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<style>.some_class{padding: 7px;}#wrappep>.some_class{cursor: pointer;}.color-green{color: green;}</style>
</head>
<body>';
echo '<div id="wrappep" class="wrappep">';
foreach($region as $key => $val) {
echo '<div class="some_class" data-id="' . $key . '">' . $val['name'] . '</div>'."\n";
}
echo '</div>';
echo '<div class="some_class" data-id="no-id">No Click</div>'."\n";
echo '<script>
let orig = $("#wrappep").html();
$("#wrappep").on("click", ".some_class", function () {
let id = $(this).attr("data-id");
$.ajax({
url: "?id="+id,
success: function (result) {
let region = $.parseJSON ( result );
$(".some_class[data-id=" + region.country_id + "]").append("<span class=\'color-green\'> Вы угодили пальцем в " + region.mainland + "</span>").css("cursor", "default");
}
});
$("#wrappep").html(orig);
});
</script>';
echo '</body>
</html>';