PHP 输出 JSON 数据

发布于 2024-11-02 08:45:17 字数 652 浏览 0 评论 0原文

我已经连接到 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 并填充下拉列表down,这也工作正常。但是,在 PHP 中创建的 JSON 数据会输出在我生成的页面的顶部。

IE, ([{"color":"紫色"},{"color":"红色"},{"color":"蓝色"},{"color":"粉色"},{"color": "Yello"}])

如何在页面上不输出 JSON 的情况下仍然访问 jsoncallback

I have connected to a mysql database and I am trying to use jquery to populate a drop down menu using data from the database and JSON.

I do not have much experience with JSON, but I have read many articles and searched the web for tutorials.

In my PHP to connect to the database, the last lines format and output the JSON correctly:
$response = $_GET["jsoncallback"] . "(" . json_encode($colors) . ")";
echo $response;

In the javascript, I use:
$.getJSON("db.php?jsoncallback=?", function(data){ //loop that populates the drop down });

I have jquery set up to grab the JSON and populate the drop down, which is also working correctly. However, the JSON data that is created in the PHP is outputted at the top of my generated page.

i.e.,
([{"color":"Purple"},{"color":"Red"},{"color":"Blue"},{"color":"Pink"},{"color":"Yello"}])

How do I still access the jsoncallback without outputting the JSON on my page?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我家小可爱 2024-11-09 08:45:17

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

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

更新 JS,传递新的 actions 参数。

$.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;

 }

It looks like you are using the same file to generate the JSON output aswell and generate your normal pages, which is why the JSON will output at the top of the page.

Try wrapping the JSON output in an if statement that prevents output unless you reqire it, ie when you make an AJAX request, or move the JSON output to another file such as ajax.php that is specifically for handling AJAX requests. Simple example below.

Updates JS, passing over a new actions param.

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

New PHP file ajax.php

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

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

 }
断桥再见 2024-11-09 08:45:17

以下内容是否在脚本块内?如果没有,那就必须如此。

echo $response;

就像这样:

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

Is the following inside a script block? If not, it needs to be.

echo $response;

Like so:

echo "<script>{$response}</script>";
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文