Drupal $得不到完整的HTML

时间:2015-09-08 08:56:22

标签: javascript jquery ajax drupal drupal-7

我写了一个Drupal模块,我试图通过$ get调用.module文件。它正在工作。但它正在返回enitire HTML页面。我尝试drupal_json_output,因为我正在研究drupal -7。我也尝试使用getJSON但是它停止给我任何响应。请帮忙

这是我的.module文件

<?php

/**
* Implementation of hook_init().
*/
function ajax_privacy_init() {
  drupal_add_js(drupal_get_path('module','ajax_privacy').'/userprivacy.js');
}

/**
* Implementation of hook_menu().
*/
function ajax_privacy_menu() {

  $items = array();

  $items['user/%'] = array(
    'title' => 'menu privacy',
    'page callback' => 'ajax_privacy_get_html', // Render HTML
    'page arguments' => array(2),
    'type' => MENU_CALLBACK,
    'access arguments' => array('access content'),
  );
  return $items;
}
/**
 * Callback to return JSON encoded data.
 */
function ajax_privacy_get_html($arg) {

 $array['text'] = $arg;
 die(drupal_json_output($array));

}

这是我的.js文件

// Jquery wrapper for drupal to avoid conflicts between libraries.
(function ($) {
  // Jquery onload function.

    Drupal.behaviors.ajax_privacy = {
    attach: function (context, settings) {
    // Your JS code.

    user_id_ajax=urldetect();

    if(user_id_ajax!=-1)
    ajax_request='user/'+user_id_ajax;

    //alert(ajax_request);
    $.get('',{q:ajax_request},ajaxAction);

    return false;
    }
    };

  ajaxAction=function(response){
    alert(response);
  };

  urldetect=function()
  {
  current_url=window.location.href;
  //alert(current_url);

  user_id_temp=-1;
  slash_temp=-1;

  if(current_url.search("user/")!=-1)
  {
  user_id_temp=current_url.substring(42);
  slash_temp=user_id_temp.search("/");
  if(slash_temp!=-1)
  {
  user_id_temp=user_id_temp.substring(0,slash_temp);
  }

  }

  return(user_id_temp);
  };

})(jQuery); 

1 个答案:

答案 0 :(得分:0)

在true处添加访问回调:

$items['user/%'] = array(
    'title' => 'menu privacy',
    'page callback' => 'ajax_privacy_get_html', // Render HTML
    'page arguments' => array(2),
    'type' => MENU_CALLBACK,
    'access arguments' => array('access content'),
    'access callback' => TRUE // add this line
  );

试试这个:

function ajax_privacy_get_html($arg) {

 $array['text'] = $arg;
 print json_encode($array);
 exit();
}