2011-04-21 70 views
0

我已经连接到一个mysql数据库,我试图使用jquery来使用数据库和JSON中的数据填充下拉菜单。来自PHP的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"}])

如何仍可以访​​问jsoncallback没有我的网页上输出JSON?

+1

它是PHP或JavaScript,增加了JSON到您的网页?我们需要更多的细节来帮助你完成这个任务,因为上面的代码没有问题。 db.php与主文件是同一个文件吗? – mekwall 2011-04-21 07:13:13

+0

您可以从PHP返回一个下拉列表,您是否必须使用javascript创建一个下拉列表? – Zebra 2011-04-21 07:14:49

+0

嗯,你可以显示填充下拉菜单的代码吗?或者你有网上的地方,我们可以看到这在行动? – kapa 2011-04-21 07:14:59

回答

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; 

} 
+0

很好的答案。我将请求移至另一个文件。非常非常感谢你。 – cbourn 2011-04-21 07:22:50

-2

脚本块内是否存在以下内容?如果不是,它需要。

echo $response; 

像这样:

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

什么......在地球上? – mekwall 2011-04-21 07:10:32

+0

为什么你需要把脚本标签之间的响应? – 2011-04-21 07:12:07

+0

这根本没有任何意义。为什么它需要在脚本块内? – mekwall 2011-04-21 07:15:09