需要JSON将值从特定内容类型字段传递给AJAX

时间:2012-09-26 15:23:42

标签: ajax json drupal drupal-7

我是PHP新手。

我想构建一个模块,我需要json传递特定的内容类型字段。

我正在尝试这个,但我不知道如何处理回调函数。

这是我在.js中的ajax

$.ajax({
  type: 'GET',
  url: '/mappy/ajax/poi',
  data: {
    nid: nid
  },
  dataType: 'json',
  success: function(data){
    alert(data) 
  }
});


})

这是我在php中的.module

function mappy_menu() {
  $items = array();

  $items['/mappy/ajax/poi'] = array(
    'title' => 'Mappy Pois',
    'page callback' => 'mappy_get',
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );
  return $items;
}

function mpapy_get() {

  $nid = $_GET('nid');
  $title = field_get_items('node', $node, 'field_title');
  $result = json_encode(
        db_query("SELECT nid,title FROM {node}", $nid)
    );

  drupal_json_output($result);
  print $result;
}

非常感谢您的建议。

2 个答案:

答案 0 :(得分:1)

获得JSON响应后,您需要将其转换为javascript数组。为此,你可以这样做:

var javaArray = $.parseJSON(data);

现在您可以使用javaArray ['key1'] ['key2']等代码检索数据。

答案 1 :(得分:0)

<强>的.js

$.ajax({
  type: 'GET',
  // Do not use slash at the beginning, use Drupal.settings.basePath instead
  url: Drupal.settings.basePath + 'mappy/ajax/poi',
  data: {
    nid: nid
  },
  dataType: 'json',
  success: function(data) {
    alert(data) 
  }
});

<强> .module

function mappy_menu() {
  $items = array();
  // Never use slash at the beginning in hook_menu
  $items['mappy/ajax/poi'] = array(
    'title' => 'Mappy Pois',
    'page callback' => 'mappy_get',
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );
  return $items;
}

function mappy_get() {
  $node = node_load($_GET('nid'));
  // Or equivalent
  /* $node = db_select('node', 'n')
       ->fields('n', array('nid', 'title'))
       ->condition('n.nid', $_GET('nid')))
       ->execute()
       ->fetchAll(); */

  $values = array(
    'nid' => $node->nid,
    'title' => $node->title
  );

  #$result = json_encode(
  #  db_query("SELECT nid,title FROM {node}", $nid)
  #);

  // drupal_json_output already print the value
  // print $result;

  drupal_json_output($values);
  drupal_exit();
}