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

前端之家收集整理的这篇文章主要介绍了ajax – 如何使用Drupal返回实际的JSON?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在本地实现一个简单的 AJAX函数,允许我在用户输入时自动完成现有节点的节点标题.为此,我需要能够拥有可以在节点标题搜索的API.问题是当我输出原始 JSON时,它被标签包围.所以,无论我做什么,我都会……
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <pre style="word-wrap: break-word; white-space: pre-wrap;"> {json here}</pre>
  6. </body>
  7. </html>

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

  1. <?PHP
  2.  
  3. /**
  4. * Implementation of hook_menu()
  5. */
  6. function content_relation_menu() {
  7. $items = array();
  8. $items['api'] = array(
  9. 'title' => 'Search','page callback' => 'content_relation_get','access callback' => TRUE,'type' => MENU_CALLBACK,);
  10.  
  11. return $items;
  12. }
  13.  
  14. function content_relation_get($term = '') {
  15. drupal_add_http_header('Content-Type','application/javascript; utf-8');
  16. $var = json_encode(
  17. db_query("SELECT nid,title FROM {node} WHERE title LIKE :title LIMIT 5",array(":title" => $term.'%'))->fetchAll()
  18. );
  19. echo $var;
  20. exit(0);
  21. }

如何返回JUST原始JSON?

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

UPDATE

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

链接可能有所帮助:

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

猜你在找的Ajax相关文章