[英]display browser window width using PHP
我希望我的PHP腳本能夠訪問瀏覽器窗口的寬度。 我一直在閱讀這篇文章,PHP本身無法訪問這些信息,但Javascript / jQuery可以,然后可以使用AJAX將其傳遞給服務器,因此PHP可以實現它。
在線解決了幾個問題后,我編寫了以下測試文件,稱之為“test.php”
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
</head>
<?php
if (!isset($_POST["window_width"])) {
?>
<script type="text/javascript">
var window_width = $(window).width();
$.ajax({
type: "POST",
data: "window_width="+window_width,
});
</script>
<?php
}
if(!isset($_POST["window_width"])) {
echo "not set";
}
?>
</html>
加載test.php顯示“未設置”,表明PHP沒有獲取window_width變量。 這對我來說似乎很奇怪,因為Firebug顯示變量存在(在我的計算機上設置為1366,因為這是我的瀏覽器的寬度)。
如何確保設置$ _POST [“window_width”]以便我可以使用PHP訪問它?
我不明白你的目標是什么,但看起來你忘了等到DOM准備好了。
$(function() {
var window_width = $(window).width();
$.ajax({
type: "POST",
data: "window_width="+window_width,
});
});
您的服務器端代碼不會暫停處理以等待JavaScript運行。 您在這里處理兩個單獨的HTTP請求。
$_POST['window_width']
。 PHP返回包含該腳本的HTML文檔。 由於$_POST['window_width']
仍然沒有為該請求設置,因此它也沒有設置回聲。 $_POST["window_width"]
已設置並包含在返回給JavaScript的文檔中。 success
處理程序(或HTTP請求返回時運行的任何其他代碼),因此瀏覽器不會對該文檔執行任何操作。 Ajax是一種簡單的說法“用JavaScript與網絡服務器對話”。 它不會阻止HTTP成為無狀態請求 - 響應協議。
你還沒有說明你的用例來獲取窗口寬度(頁面加載后可以改變),因此很難為你遇到的任何問題提出一個很好的解決方案。 (您似乎已經問過XY問題 )。
想知道窗口寬度的兩個常見原因是:
在這種情況下,我不認為你需要使用ajax,'outer'(?)頁面需要接收數據,而不是'內部'ajax請求。
<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
</head>
<?php
if (!isset($_POST["window_width"]) && !isset($_SESSION['window_width'])) {
?>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" id="window_width_form" style="display:none;">
<input name="window_width" id="window_width" value="" />
</form>
<script type="text/javascript">
$(function(){
$('#window_width').val($(window).width());
$('#window_width_form').submit();
});
</script>
</body>
<?php
}
elseif (isset($_POST['window_width']) && !isset($_SESSION['window_width']))
{
$_SESSION['window_width'] = $_POST['window_width'];
exit(header("Location: {$_SERVER['PHP_SELF']}\r\n"));
}
if(!isset($_POST["window_width"]) && !isset($_SESSION['window_width'])) {
echo "not set";
}
?>
</html>
嘗試
$.ajax({
url : "your url goes here"
type: "POST",
data: {"window_width":window_width}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.