如何正确使用parseJSON?

时间:2012-08-10 20:40:02

标签: php javascript mysql json

  

可能重复:
  How to send a json string back to jquery

我需要运行 myquery.php ,然后我需要在JavaScript函数 createChartControl 中使用此php代码的输出。以下是我的完整代码。问题是没有出现警报消息(alert(returned_array)),并且未执行函数 createChartControl 。我单独测试了 myquery.php ,它运行正常。

<script>
function updateList(){
    $.ajax({
        url: "myquery.php",
        type: 'GET',  
        data: { query: "SELECT tm FROM schedule WHERE val='BT009';" }, 
        dataType: 'json',
        success: function (data) { 
                 var returned_array = $.parseJSON(data);
                 alert(returned_array);
                 createChartControl('schedule', returned_array);
        }
   })
}

$(document).ready(function() {
    updateList();
});
</script>


<script type="text/javascript" language="JavaScript">
function createChartControl(htmlDiv1,data)
{
//...
}
</script>


<?php
include_once 'include/connect_db.php';

    $query = $_GET['query'];    

    $condb = connectDB();
    $result=execute_query($query);
    closeDB($condb);

    $rows = array();

    while($row = mysql_fetch_array($result)) {
            $rows[] = $row['tm'];
    }   

    return $rows;
?>

更新:仍然说:你的ajax失败了

function updateList(){
   $.ajax({
          url: 'myquery.php',
          type: 'POST',
          data: {'query': "SELECT tm FROM schedule WHERE val='BT009';" }
        }).done(function(data) {
           console.log(data);
//         createChartControl('schedule', returned_array);
        }).fail(function() {
           console.log('Your ajax just failed');
    });
}

myquery.php

<?php
include_once 'include/connect_db.php';

if (isset($_POST['query'])) {
    $query = $_POST['query'];   

    echo($query);

    $condb = connectDB();
    $result=execute_query($query);
    closeDB($condb);

    $rows = array();

    if ($result && mysql_num_rows($result)) {
        while($row = mysql_fetch_array($result)) {
            $rows[] = $row['tm'];
        }
    }   

    echo json_encode($rows);
}
?>

1 个答案:

答案 0 :(得分:2)

答案是你不要在这种情况下使用它。如果在jQuery AJAX调用上指定dataType: 'json',它将自动将响应解析为JSON。

如果解析成功(服务器返回有效的JSON),则生成的对象将传递给success回调函数。如果解析失败,则执行error回调函数(如果已指定)。