javascript içinden php ye değişken değeri atama
Merhaba arkadaşlar aşağıdaki javascript anlık olarak tarayıcının boyutunu gösteriyor.
Bu javascript içinde yükseklik ve genişlik değerlerini birer php değişkenine atayabilir miyiz?
<p id="ViewPortSize"> </p>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
function GetViewPortSize() {
$('#ViewPortSize').text("Width = " + $( window ).width() + " / Height = " + $( window ).height()); /* <!doctype html> may be necessary */
}
/* Execute "GetViewPortSize" function at page load */
$(GetViewPortSize);
/* Execute "GetViewPortSize" function everytime the browser viewport is resized */
$( window ).resize(GetViewPortSize);
</script>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (6)
front-end tarafını ilgilendiren konularda php yerine css'i kullanabilirsin. neden @media
sorgularını kullanarak bunu yapmıyorsun?
iframe.youtube-video {
width: 700px;
height: 300px;
}
@media(max-width: 700px){
iframe.youtube-video {
width: 100%;
height: 280px;
}
}
gibi..
Bir şekilde php değişkene aktardığını varsayalım, örneğin tayfunun dediği gibi cookiede tutarak.
Javascriptte resize kullandığın için dinamik olarak her değişiklikte istek yollamak zorunda kalcaksın ve dediği gibi şişme yapacak.
Çözünürlüğe göre veri sayısı belirlemek istiyorsan alternatif olarak; örneğin içinde 10 tane veri olan bir div ve 5 tane veri olan bir divin olabilir ve bunları çözünürlüğe göre show|hide yapabilirsin.
Veya yine çözünürlüğe göre örneğin width 650den küçükse 5.den sonraki divleri hide yapabilirsin
Iframe veya başka bir elemanın boyutu için zaten phpye ihtiyacın yok.
o zaman şöyle sorayım, bazı durumlarda ekran çözünürlüğüne ihtiyacım oluyor.
Mesela listeleme yaptığım sayfalarda sayfa başı gösterilecek adeti ekran yüksekliğine göre ayarlamak istiyorum.
bu örnekler çoğaltılabilir bir örnek daha vereyim, ifarme ile youtube video gösterdiğim sayfalar mobil cihazlarda farklı çözünürlüklerde ıkıyor bu sebeple çözünürlüğü bilirsem o değişkene göre farklı değerler vererek doğru görünmesini sağlarım.
bu değerlerle javascript tarafında cookie oluşturabilirsin. php tarafında da şöyle bir işlem yapabilirsin;
$width = $_COOKIE['width'];
ama tabi nerede nasıl kullanacağına bağlı, ajaxlada her seferinde gönderebilirsin ama çok gereksiz bir request isteği birikir ve şişmeye başlar.
JQuery ile post veya get yöntemiyle halledebilirsin.
var post = function() {
$.ajax(
{
url: "ajax.php",
type: "POST",
data: { width: $( window ).width(), height: $( window ).height()}
})
.then(function (data)
{
console.log( data );
},
function (xhr, status, error)
{
console.log(status + ": " + error);
});
}
ajax.php
if(isset($_POST['width']) && isset($_POST['height'])){
$width = $_POST['width'];
$height = $_POST['height'];
echo "width = $width, height = $height";
}