确定通过ajax将PHP变量转换为javascript变量。
我有一些PHP代码来使这个变量看起来像这样:(我不会把整个代码,因为它的工作只有这个主题的相关代码。我有new_m变量,这是ARRAY,我想通过它)
shuffle($new_m);
echo json_encode($new_m);
然后我有js文件应该捕获该回声,它看起来像这样:
function getXMLHttp()
{
var xmlHttp
try
{
//Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
}
catch(e)
{
//Internet Explorer
try
{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
alert("Your browser does not support AJAX!")
return false;
}
}
}
return xmlHttp;
}
function MakeRequest()
{
var xmlHttp = getXMLHttp();
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4)
{
var myvar = new Array();
var myvar=JSON.parse(xmlHttp.responseText);
return myvar;
}
}
xmlHttp.open("GET", "showimage.php", true);
xmlHttp.send(null);
}
当此代码不在此处的单独页面上时,myvar在函数内部使用时,它可以正常工作(因为我在另一个页面上成功使用了此代码)。所以我认为我的问题是没有返回正确的变量或没有以正确的方式返回它。
最后一段代码是应该使用myvar的部分,如下所示:
<script type="text/javascript" src="js/shuffle.js"></script>
<title>undf</title>
</head>
<body onload="MakeRequest()">
<script type="text/javascript">
alert(myvar);
var pos = 0;
var imgs = myvar;
</script>
没有任何反应。我仍然是这个ajax和javascript的新手。谢谢你提前帮忙。
答案 0 :(得分:3)
你的问题是,当执行alert( myvar);
时,对服务器的请求还没有发生,并且变量未定义(更不用说我相信变量超出了范围,所以你可以'访问它)。
您应该设置JS,以便在窗口加载时执行请求以检索数据然后读取它:
<script type="text/javascript">
window.onload = function() {
var myvar = MakeRequest();
alert( myvar);
}
</script>
然后,您可以删除onload
代码中的<body>
。
请注意,我并不完全确定您是否正确地从MakeRequest()
函数返回值,因为return
位于xmlhttp回调范围内,而不在函数中。您应该对此进行调查并验证。