Me gustaría implementar una función AJAX simple localmente que me permita completar automáticamente los títulos de los nodos ya existentes a medida que el usuario escribe. Para ese fin, necesito la capacidad de tener una API que pueda buscar en los títulos de los nodos. El problema es que cuando produzco JSON sin formato, viene rodeado de etiquetas. Entonces, no importa lo que haga, sigo recibiendo ...
<html>
<head>
</head>
<body>
<pre style="word-wrap: break-word; white-space: pre-wrap;"> {json here}</pre>
</body>
</html>
Intenté implementar una plantilla de página personalizada que ya solo genera contenido, que produjo los mismos resultados. Así es como estoy haciendo esto actualmente, en mi archivo de módulo ...
<?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);
}
¿Cómo puedo devolver JUST raw JSON?
nodes
ajax
javascript
json
rybosome
fuente
fuente
drupal_json_output
función. Ver aquí o allá para ejemplos de trabajo.Respuestas:
Para Drupal 6, puede usar drupal_json
Para Drupal 7, cámbielo para usar drupal_json_output
Probablemente también sería más seguro analizar la consulta para desinfectar, verificar errores, etc., en lugar de simplemente intentar devolver el resultado.
fuente
Vi que no había respuesta para Drupal 8.
Para procesar JSON en Drupal 8, use el siguiente código:
Puedes leer más sobre esto aquí
fuente
Aquí hay un ejemplo de la vida real para Drupal 8
https://github.com/npinos/drupal8-greenhouse
Incluye controlador y enrutamiento
Este código devuelve un recuento de nodos en formato json expuesto como punto final
fuente