J'aimerais implémenter une simple fonction AJAX localement qui me permet de compléter automatiquement les titres de nœuds de nœuds déjà existants en tant que types d'utilisateurs. À cette fin, j'ai besoin de pouvoir disposer d'une API que je peux rechercher sur les titres des nœuds. Le problème est que lorsque je génère du JSON brut, il est entouré de balises. Donc, peu importe ce que je fais, je continue de recevoir ...
<html>
<head>
</head>
<body>
<pre style="word-wrap: break-word; white-space: pre-wrap;"> {json here}</pre>
</body>
</html>
J'ai essayé d'implémenter un modèle de page personnalisé qui ne produit déjà que du contenu, qui a produit les mêmes résultats. Voici comment je fais actuellement cela, dans mon fichier de module ...
<?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);
}
Comment puis-je retourner JUST raw JSON?
nodes
ajax
javascript
json
rybosome
la source
la source
drupal_json_output
fonction. Voir ici ou là pour des exemples de travail.Réponses:
Pour Drupal 6, vous pouvez utiliser drupal_json
Pour Drupal 7, modifiez-le pour utiliser drupal_json_output
Il serait également plus sûr d'analyser la requête à nettoyer, la vérification des erreurs, etc., au lieu d'essayer simplement de renvoyer le résultat.
la source
J'ai vu qu'il n'y avait pas de réponse fournie pour Drupal 8.
Afin de traiter JSON dans Drupal 8, utilisez le code suivant:
Vous pouvez en savoir plus ici
la source
Voici un exemple réel pour Drupal 8
https://github.com/npinos/drupal8-greenhouse
Comprend le contrôleur et le routage
Ce code renvoie un nombre de nœuds au format json exposé en tant que point de terminaison
la source