У меня есть два массива в JavaScript: var xcoord = [];
и var ycoord = [];
После некоторой обработки каждый массив содержит 15 числовых значений. Я хотел бы отправить эти данные в обратный вызов меню в Drupal.
Мой код AJAX:
$.post('http://mysite.com/?q=menu_example/my_page', {'ycoord[]': ycoord, 'xcoord[]': xcoord } );
Drupal PHP:
$items['menu_example/my_page/%/%'] = array( 'title' => 'My Page', 'description' => 'i hope this works', 'page callback' => '_graphael', 'page arguments' => array(2, 3), // fill this, 'access callback' => true, 'type' => MENU_CALLBACK, );
В моей консоли я вижу, что значения для xcoord
и ycoord
передаются правильно, но обратный вызов не совсем работает. Мой вопрос: как передать массивы в обратный вызов меню? Должен ли я по-прежнему использовать %
placeholder в ключе $items
?
Второй аргумент, который вы передаете в $.post()
, не привязан к URL-адресу, который вы передаете в качестве первого аргумента; это данные, которые передаются PHP в $_POST
.
Правильное определение обратного вызова меню должно быть следующим.
$items['menu_example/my_page'] = array( 'title' => 'My Page', 'description' => 'I hope this works', 'page callback' => '_graphael', 'access callback' => TRUE, 'type' => MENU_CALLBACK, );
Затем обратный вызов вашей страницы должен найти данные, переданные из jQuery в $_POST
.