Làm cách nào tôi có thể nhận được dữ liệu $ _POST trong một cuộc gọi lại?


7

Tôi đã triển khai hook_menu đại khái như sau:

function sample_menu() {
    return array(
        'path/to/things' => array(
            'page callback' => 'callback_function',
            'access arguments' => array('access content'),
            'page arguments' => array(),
            'type' => MENU_CALLBACK
        )
    );
}

Tôi muốn có thể đăng dữ liệu lên url này. Vì vậy, nói $ _POST là mảng sau:

array(
    'data1' => 'value1',
    'data2' => 'value2',
)

Làm cách nào tôi có thể truy cập $ _POST ['data1'] và $ _POST ['data2'] trong cuộc gọi lại? Truy cập trực tiếp $ _POST dường như không hoạt động (nó bị biến thành trống rỗng).

Câu trả lời:


14

Họ truy cập $_POSTtheo cách tương tự như các chức năng khác làm.

Lấy file_ajax_upload () làm ví dụ; Nó chứa mã sau đây.

  if (empty($_POST['form_build_id']) || $form_build_id != $_POST['form_build_id']) {
    // Invalid request.
    drupal_set_message(t('An unrecoverable error occurred. The uploaded file likely exceeded the maximum file size (@size) that this server supports.', array('@size' => format_size(file_upload_max_size()))), 'error');
    $commands = array();
    $commands[] = ajax_command_replace(NULL, theme('status_messages'));
    return array('#type' => 'ajax', '#commands' => $commands);
  }

Hàm này là một cuộc gọi lại trang được định nghĩa trong file_menu () .

  $items['file/ajax'] = array(
    'page callback' => 'file_ajax_upload', 
    'delivery callback' => 'ajax_deliver', 
    'access arguments' => array('access content'), 
    'theme callback' => 'ajax_base_page_theme', 
    'type' => MENU_CALLBACK,
  );

Có vẻ như điều này là chính xác. Tôi nghĩ rằng lỗi của tôi liên quan đến cách tôi đăng dữ liệu ... Dù sao thì tôi cũng không làm đúng.
gregghz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.