从PHP输出JSON数据

时间:2011-04-21 06:54:21

标签: php jquery mysql json

我已连接到mysql数据库,我正在尝试使用jquery使用数据库和JSON中的数据填充下拉菜单。

我对JSON没有多少经验,但我读了很多文章并在网上搜索了教程。

在我的PHP中连接数据库,最后一行格式化并正确输出JSON:
$response = $_GET["jsoncallback"] . "(" . json_encode($colors) . ")";
echo $response;

在javascript中,我使用:
$.getJSON("db.php?jsoncallback=?", function(data){ //loop that populates the drop down });

我设置了jquery以获取JSON并填充下拉列表,这也正常工作。但是,在PHP中创建的JSON数据将在我生成的页面顶部输出。

即, ([{"color":"Purple"},{"color":"Red"},{"color":"Blue"},{"color":"Pink"},{"color":"Yello"}])

如果不在我的页面上输出JSON,我如何仍然访问jsoncallback

2 个答案:

答案 0 :(得分:1)

看起来您使用相同的文件生成JSON输出并生成普通页面,这就是JSON将在页面顶部输出的原因。

尝试将JSON输出包装在if语句中以防止输出,除非您需要输出,即当您发出AJAX请求时,或将JSON输出移动到另一个文件,例如专门用于处理AJAX请求的ajax.php。简单的例子如下。

更新JS,传递一个新的动作参数。

$.getJSON("ajax.php?jsoncallback=?", { action: 'get_colors' },  function(data){ //loop that populates the drop down })

新的PHP文件ajax.php

// Include required other php files, etc
switch ($_GET['action']) {

    case 'get_colors':
        $response = $_GET["jsoncallback"] . "(" . json_encode($colors) . ")";
        echo $response;
    break;

 }

答案 1 :(得分:-2)

脚本块中是否包含以下内容?如果没有,则需要。

echo $response;

像这样:

echo "<script>{$response}</script>";