我正在通过XMLHttpRequest获得屏幕分辨率。 我正在打开带有屏幕分辨率变量的show_content.php文件,该文件是使用GET方法提取的。可行!
xmlhttp.open("GET","show_content.php"+queryString,true);
并在随后的div中显示此文件及其变量
<div id="txtResolution"></div>
这部分也很好!
问题: 这个div包含屏幕分辨率变量,我想在它之外的其余代码中使用它,但是我无法传递它们。我该如何将这些变量传递给原始代码。
我使用了GET方法,但是无法将变量传递给show_content.php之外的原始代码 我也尝试过GLOBALS和Sessions,但是没有运气
这里有代码。一切正常,但我无法将变量从“ txtResolution” div传递给其余代码
function showResolution(field_id)
{
var xmlhttp;
if (field_id.length==0)
{
document.getElementById("txtResolution").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myvalue").innerHTML=xmlhttp.responseText;
var myphpvar = document.getElementById('myvalue').innerText;
}
}
var winW = 630, winH = 460;
if (document.body && document.body.offsetWidth) {
winW = document.body.offsetWidth;
winH = document.body.offsetHeight;
}
if (document.compatMode=='CSS1Compat' &&
document.documentElement &&
document.documentElement.offsetWidth ) {
winW = document.documentElement.offsetWidth;
winH = document.documentElement.offsetHeight;
}
if (window.innerWidth && window.innerHeight) {
winW = window.innerWidth;
winH = window.innerHeight;
}
var queryString = "?width=" + winW + "&height=" + winH;
xmlhttp.open("GET","show_content.php"+queryString,true);
xmlhttp.send();
}
答案 0 :(得分:0)
我假设show_content.php包含一些HTML标记和一些您想在JavaScript代码中使用的php var。 您可能只是将php var内容放在show_content.php返回的标记内的隐藏div中的某个位置:
show_content.php:
<?
$myvar = $_REQUEST['width'] + $_REQUEST['height'];
// send myvar to response:
print '<div style="display:none" id="myvalue">'.htmlspecialchars($myvar).'</div>';
?>
然后在...innerHtml = xmlhttp.responseText;
之后将以下代码放入您的javascript中(请参阅评论)
function showResolution(field_id)
{
var xmlhttp;
if (field_id.length == 0)
{
document.getElementById("txtResolution").innerHTML = "";
return;
}
if (window.XMLHttpRequest)
{ // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{ // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function ()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById("txtResolution").innerHTML = xmlhttp.responseText;
// Extract myvar value from php
var myphpvar = document.getElementById('myvalue').innerText;
alert('Var from php:'+myphpvar);
}
}
var winW = 630, winH = 460;
if (document.body && document.body.offsetWidth)
{
winW = document.body.offsetWidth;
winH = document.body.offsetHeight;
}
if (document.compatMode == 'CSS1Compat' &&
document.documentElement &&
document.documentElement.offsetWidth)
{
winW = document.documentElement.offsetWidth;
winH = document.documentElement.offsetHeight;
}
if (window.innerWidth && window.innerHeight)
{
winW = window.innerWidth;
winH = window.innerHeight;
}
var queryString = "?width=" + winW + "&height=" + winH;
xmlhttp.open("GET", "show_content.php" + queryString, true);
xmlhttp.send();
}
当然,最好在响应中使用某种JSON和数据,并且不要在AJAX中混合使用html和数据。