在Javascript上的另一个页面中获取JSON信息

时间:2014-05-08 18:54:47

标签: javascript php mysql json

所以我已经检查了很多例子和相当多的教程,但由于某些未知原因它绝对不适合我。

我已经检查了Get JSON data from another page via JavaScript,但它并没有给我带来帮助。

所以我想要做的是从MySQL获取一些信息并在我在另一个.php上使用的Jscript函数上使用它,这意味着将从mysql(connect.php)检索的信息转移到另一个文件(test.php) ,但是虽然从connect.php中正确检索了信息,但它没有移动到另一个文件。

这些是我的文件。

connect.php

<?php
mysql_connect('localhost', 'root', '') or die (mysql_error());
mysql_select_db('dbexample') or die (mysql_error());
$data = mysql_query("SELECT * FROM lugares") 
or die(mysql_error()); 
$arr = array();
while ($obj = mysql_fetch_object($data)) {
   $arr[] = array('latt' => $obj->latt,
               'lng' => $obj->long,
               'nombre' => $obj->nombre,
               'direccion' => $obj->direccion,
    );
 }
 echo '{"users":'.json_encode($arr).'}';
 ?>

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>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

    <script type="text/javascript">
      $.ajax({
            type: "POST",
            url:"connect.php",
            async: true,
            success: function(datos){
                var dataJson = eval(datos);

                for(var i in dataJson){
                    alert(dataJson[i].latt + " _ " + dataJson[i].lng + " _ " + dataJson[i].nombre);
                }

            },
            error: function (obj, error, objError){
                //avisar que ocurrió un error
            }
    });
    </script>
    </head>

    <body>
    <p>Super freak</p>
    </body>
    </html>

非常感谢任何帮助。

编辑:我在test.php上修改了我的脚本,但感觉不对劲;我在这里失去它:(

    <script type="text/javascript">
      $.ajax({
            type: "POST",
            url:"connect.php",
            dataType: "JSON",
            async: true,
            success: function(datos){
                var dataJson = $.parseJSON(datos);

                $.each(dataJson, function(){
                    alert(dataJson.latt + "_"+ dataJson.lng);
                }

            },
            error: function (obj, error, objError){
                //avisar que ocurrió un error
            }
    });
    </script>

谢谢!

3 个答案:

答案 0 :(得分:0)

有两个问题

  1. 您的返回类型看起来像在connect.php中编码的json,因此在dataType: JSON
  2. 中添加$.ajax 在test.php中
  3. 你的成功数据应该被json解码为Jquery所以你可以使用$.parseJson(data)

    请参考此[示例] :( http://www.jquerybyexample.net/2012/05/how-to-read-and-parse-json-using-jquery.html

答案 1 :(得分:0)

尝试将alert(dataJson[i].latt更改为alert(dataJson[i].users.latt

我可能错了,但看起来你永远不会进入你硬编码到响应中的用户项目。

答案 2 :(得分:0)

我看到了问题 $ .ajax是jquery元素所以 首先包括jquery.js文件,然后在此使用$ .ajax

中添加document.ready

下面的例子对我有用 这是你的test.php   

$(document).ready(function(){


  //start ajax request
  $.ajax({
    url: "test.php",
    //force to handle it as text
    dataType: "text",
    success: function(data) {

      //data downloaded so we call parseJSON function
      //and pass downloaded data
      var jsonData = $.parseJSON(data);
      //now json variable contains data in json format
      alert(jsonData.firstName);//access first array
      alert(jsonData.series[0]);//access second array elements

    }
  });



});

你的connect.php应该返回json编码的数组:

$php_array = array('firstName'=>'Walter','lastName'=>'White', 'series'=>array('episode1','episode2'));

echo json_encode($php_array);