我已连接到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
?
答案 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>";