【发布时间】:2011-11-03 17:49:28
【问题描述】:
我想在本地实现一个简单的 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?
【问题讨论】:
-
确实是一个非常有用的问题并且可以节省时间!这可以帮助您仅使用 hook_menu 和回调在 drupal 中自行设置 Web 服务(当您不需要像 services 这样的重量级模块时)。