我想知道如何执行json文件。因为当我将文件推送到在线时它在本地运行它不会返回任何value.shall我想为xmlarr.php提供在线路径。 这是我的code.INDEX.php
<script type="text/javascript">
function json()
{
alert('ok');
xmlhttp= new XMLHttpRequest();
/*var url="dbarr.php";*/
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
var ret_arr=JSON.parse(xmlhttp.responseText);
json_arr(ret_arr);
}
}
xmlhttp.open("GET","xmlarr.php",true);
xmlhttp.send();
}
function json_arr(x)
{
var res="";
var i;
for(i=0;i<x.length;i++)
{
// alert(x[i].startstationname);
res+=x[i].startstationname+" "+x[i].tostationname1+"</br>";
}
document.getElementById('print').innerHTML=res;
}
</script>
<form name="f1" action="" method="get">
<input type="submit" onClick="json();" value="EZEEBUS">
</form>
<p id="print"></p>
my xmlarr.php
$con=mysql_connect($sname,$uname,$pwd) or die(mysql_error());
$test=mysql_select_db($database,$con) or die(mysql_error());
$qry=mysql_query("select * from booking");
echo '[';
while($res=mysql_fetch_array($qry))
{
echo '{"startstationname":"'.$res['stationname'].'","tostationname1":"'.$res['tostationname'].'"},';
}
echo '{"startstationname":"end","tostationname1":"end"}]';
?>
</body>
</html>
答案 0 :(得分:0)
如果没有向您提供太多信息,我无法确定问题,但这里有一些事情需要检查:(另外,我在您的onclick处理程序中添加了返回false,因此它不会更改页面。)
您的index.php文件与xmlarr.php在同一目录中吗?
您的xmlarr.php文件与index.php文件在同一个域中吗?如果没有,您可能会遇到跨域限制。默认情况下,您只能向与您当前正在查看的页面位于同一域的文件发出AJAX请求。
网络控制台是否显示有用的内容?在Chrome中,您可以点击View
- &gt;打开它。 Developer
- &gt; Developer Tools
,然后点击Network
。打开此屏幕后,单击您的按钮以启动AJAX请求并观察错误。
回答编辑过的问题:
要使用json_encode,您需要执行与以下代码类似的操作。
$stations = array();
while($res = mysql_fetch_array($qry))
{
$stations[] = array(
'startstationname' => $res['stationname'],
'tostationname1' => $res['tostationname']
);
}
// I'm assuming this last item is no longer needed, but I added it anyway
$stations[] = array(
'startstationname': 'end',
'tostationname1': 'end'
);
echo json_encode($stations);