Переменная из js в php можно?

614
.
erricss

Здравствуйте.
Можно ли так сделать?

Есть такая структура.
<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']");
.
erricss

Спасибо попробую. Меня смущает то что php работает на стороне сервера, и будет ли это все работать на одной странице.
Т.е. страница уже прогрузилась, скрипт php сработал, я нажал на div, сработает ли php на этой же странице?

.
КоханийВолодимир

нит. выноси логику в другой файл и там обработай запрос, потом вернешь аяксом и на стороне js обработаешь как надо

.
Hey guys! Finally I'm gonna change status!?
# 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>';
Всего: 5