Как отправить запрос на публикацию ajax определенному модулю в Drupal6? - PullRequest
2 голосов
/ 17 ноября 2011

Я хочу отправить пост-запрос ajax в модуль с именем sampleTest в Drupal6. Я пробовал некоторые фрагменты кода, но я не знаю, как поместить URL-адрес модуля в функцию jjery ajax.

<script type="text/javascript">
$(function(){
    $("#one").click(function(){
        $.ajax({ 
            type: 'POST', 
            url: 'http://localhost/drupal/www/admin/build/modules/module/get/contact', 
            dataType: 'json', 
            data: "test",
            success:function(data) {
                alert("123");
            },
            complete: function(data){
                alert("complete");  
            } 
        });
    });
});
</script>

1 Ответ

5 голосов
/ 17 ноября 2011

Вы не можете отправить запрос AJAX модулю как таковой, вместо этого вы реализуете путь в своем модуле (используя hook_menu()), предоставляете обратный вызов страницы для этого пути, который выводит ответ AJAXи затем вызовите этот путь в вашем вызове AJAX.Это очень простой пример:

function mymodule_menu() {
  $items['ajax-test'] = array(
    'access callback' => TRUE,
    'page callback' => 'mymodule_ajax_callback',
    'type' => MENU_CALLBACK
  );
}

function mymodule_ajax_callback() {
  $post_data = $_POST;

  // Do something with the post data

  $output = array('status' => 'OK');

  // For Drupal 6
  drupal_json($output);
  exit();

  // Or for Drupal 7, just in case you want to know
  drupal_json_output($output);
  drupal_exit();
}

Тогда ваш JS будет выглядеть так:

$(function(){
  $("#one").click(function(){
    $.ajax({ 
      type: 'POST', 
      url: '/drupal/ajax-test', 
      dataType: 'json', 
      data: "test",
      success:function(data) { 
        alert(data.status); 
      },
      complete: function(data){
        alert("complete")  
      }
    });
  });
});
...