加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – 如何使用Drupal返回实际的JSON?

发布时间:2020-12-16 01:36:27 所属栏目:百科 来源:网络整理
导读:我想在本地实现一个简单的 AJAX函数,允许我在用户输入时自动完成现有节点的节点标题.为此,我需要能够拥有可以在节点标题上搜索的API.问题是当我输出原始 JSON时,它被标签包围.所以,无论我做什么,我都会…… html head /head body pre style="word-wrap: brea
我想在本地实现一个简单的 AJAX函数,允许我在用户输入时自动完成现有节点的节点标题.为此,我需要能够拥有可以在节点标题上搜索的API.问题是当我输出原始 JSON时,它被标签包围.所以,无论我做什么,我都会……
<html>
    <head>
    </head>
    <body>
        <pre style="word-wrap: break-word; white-space: pre-wrap;"> {json here}</pre>
    </body>
</html>

我已经尝试实现一个自定义页面模板,它只输出内容,产生相同的结果.以下是我目前在模块文件中执行此操作的方法…

<?php

/**
 * Implementation of hook_menu()
 */
function content_relation_menu() {
    $items = array();
    $items['api'] = array(
        'title' => 'Search','page callback' => 'content_relation_get','access callback' => TRUE,'type' => MENU_CALLBACK,);

    return $items;
}

function content_relation_get($term = '') {
    drupal_add_http_header('Content-Type','application/javascript; utf-8');
    $var = json_encode(
        db_query("SELECT nid,title FROM {node} WHERE title LIKE :title LIMIT 5",array(":title" => $term.'%'))->fetchAll()
    );
    echo $var;
    exit(0);
}

如何返回JUST原始JSON?

‘Drupal’的方式是使用 drupal_json_output()drupal_exit().
$data = db_query("SELECT nid,array(":title" => $term.'%'))->fetchAll();

drupal_json_output($data);

drupal_exit();

UPDATE

我只是把你的代码放到一个模块中,当我请求http://site.com/api是预期的JSON时,我得到的就是没有标签.这个问题与Drupal无关,更可能与服务器/浏览器配置有关.

此链接可能有所帮助:

What do browsers want for the Content-Type header on json ajax responses?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读