Я хотел бы реализовать простую функцию 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);
}
Как я могу вернуть просто сырой JSON?
nodes
ajax
javascript
json
rybosome
источник
источник
drupal_json_output
функцию. Смотрите здесь или там для рабочих примеров.Ответы:
Для Drupal 6 вы можете использовать drupal_json
Для Drupal 7 измените его на использование drupal_json_output
Также было бы, вероятно, безопаснее разобрать запрос на очистку, проверку ошибок и т. Д., А не просто пытаться вернуть результат.
источник
Я увидел, что для Drupal 8 ответа не было.
Чтобы обработать JSON в Drupal 8, используйте следующий код:
Вы можете прочитать больше об этом здесь
источник
Вот пример из реальной жизни для Drupal 8
https://github.com/npinos/drupal8-greenhouse
Включает контроллер и маршрутизацию
Этот код возвращает количество узлов в формате json, отображаемое как конечная точка
источник