【问题标题】:Keep getting a 404 when using Ajax in drupal在 drupal 中使用 Ajax 时不断收到 404
【发布时间】:2012-02-22 21:05:54
【问题描述】:

您好,我的(新手)Drupal 站点中的 ajax 调用遇到了这个问题。我正在尝试通过将 jQuery 发布到我的 Drupal 模块中的函数来保存表单字段中的一些数据。这是我的代码:

// in drupal
function mymodule_menu() {
    $items = array();
    $items['mymodule/set/data'] = array(
        'page callback' => 'mymodule_set_data',
        'type' => MENU_SUGGESTED_ITEM,
        'access arguments' => array('access content'),
    );
    return $items;
}
function mymodule_set_data($var) {
    drupal_json_output(array('status' => 'OK', 'data' => "return_something"));
}

// in my js file
jQuery("#form_element").on('blur',function(){
  jQuery.ajax({
    type: 'POST',
    url: "mymodule/set/data",
    dataType: 'json',
    data:{
      fu: 'bar'
    },
    success: function(data) {
      console.log(data);
    },
    error: function(jqXHR, textStatus, errorThrown){
      console.log(errorThrown);
    }
  });
});

一切顺利,jQuery get 被触发,ajax 调用被服务器捕获,我确实从服务器返回了 {"status":"OK","data":"return_something"}。除了呼叫的状态是 404 的事实... :(

【问题讨论】:

    标签: json drupal jquery


    【解决方案1】:

    我找到了解决问题的方法。

    Ik 正在将我的应用程序移动到其他主机,因此我需要更改 ajax 操作正在调用的 url。我决定使用以下代码使其动态化:

    drupal_add_js(array('url' => $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']), 'setting');
    

    我将我的 ajax 调用 url 更改为: "http://"+Drupal.settings.url + "/set/data

    这导致我的 JS 调用以下 URL: http://host/drupal/?q=mymodule/set/data 而不是旧的: http://host/drupal/mymodule/set/data

    Drupal 喜欢什么 :)

    我仍然不明白为什么我的 drupal 接受了http://host/drupal/mymodule/set/data,处理了我的数据但返回了 404。

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 2014-10-08
      相关资源
      最近更新 更多