我想知道如何执行json文件。因为它在网上运行时没有返回任何值

时间:2014-10-18 05:54:22

标签: php json

我想知道如何执行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>

1 个答案:

答案 0 :(得分:0)

如果没有向您提供太多信息,我无法确定问题,但这里有一些事情需要检查:(另外,我在您的onclick处理程序中添加了返回false,因此它不会更改页面。)

  1. 您的index.php文件与xmlarr.php在同一目录中吗?

  2. 您的xmlarr.php文件与index.php文件在同一个域中吗?如果没有,您可能会遇到跨域限制。默认情况下,您只能向与您当前正在查看的页面位于同一域的文件发出AJAX请求。

  3. 网络控制台是否显示有用的内容?在Chrome中,您可以点击View - &gt;打开它。 Developer - &gt; Developer Tools,然后点击Network。打开此屏幕后,单击您的按钮以启动AJAX请求并观察错误。

  4. 回答编辑过的问题:

    要使用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);