2012-02-22 43 views
0

你好,我在我的(新手)Drupal站點有一個ajax調用這個問題。我試圖從表單字段保存一些數據,通過jQuery發佈到我的Drupal模塊中的函數。這裏是我的代碼:在drupal中使用Ajax時要保持一個404

// 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的獲得的triggerd,Ajax調用是在服務器上逮住,而我得到的{「地位」:「OK」,「數據」:」 return_something「}從服務器返回。除了一個事實,即呼叫的狀態是404 ... :(

+0

什麼版本的Drupal? – 2012-02-23 12:42:52

+0

我正在使用Drupal 7 – jivanrij 2012-03-01 21:48:44

回答

1

我發現了一個解決我的問題。

益是我的應用程序移動到另一臺主機,並在那裏我需要改變。阿賈克斯行動調用的URL我決定把它與動態下面的代碼:

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

我改變了我的Ajax調用網址爲: 「HTTP://」 + Drupal.settings.url +「/設置/數據

這導致我的JS調用以下URL: http://host/drupal/?q=mymodule/set/data 代替舊的: http://host/drupal/mymodule/set/data

這是Drupal的東西不喜歡:)

可是我還是不明白,爲什麼我的Drupal接受http://host/drupal/mymodule/set/data,處理我的數據,但返回的404