Пустой POST из JQuery UI Dialog в функцию PHP с $ .post - PullRequest
2 голосов
/ 20 мая 2010

У меня адское время, когда я пытаюсь понять это. Может быть, кто-то может помочь мне здесь или указать мне правильное направление.

У меня есть диалоговое окно jQuery UI, которое появляется, когда пользователь нажимает на изображение. Диалог отображает форму с двумя выпадающими окнами. «отдел» и «группа». Раскрывающийся список групп отключен до тех пор, пока что-то не будет выбрано в раскрывающемся меню «Отдел».

Когда пользователь выбирает отдел, я выполняю функцию POST to php, а затем включаю и заполняю раскрывающийся список. Достаточно просто ...

<select name="dept" id="dept_select" onchange="getDeptGroups(this.value);">
 // Some data here
</select>

JS функция:

function getDeptGroups(dept)
{
       // This alert works and displays department name.
       //alert(dept);

       $.post("/am/ldap/getDepartmentGroups.php", { 
              department: dept },
              function(data){
                    alert(data);
       });
}

и, наконец, на странице php я просто делаю

<? print_r($_POST); ?>

и заканчивается пустым массивом.

Array
(
)

Это происходит как в Chrome, так и в Firefox, однако FireBug четко показывает отправляемые данные:

Снимок экрана FireBug с данными POST http://dl.dropbox.com/u/3903355/post.png

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 20 мая 2010

Во-первых, убедитесь, что сторона PHP работает должным образом. Установите статическую форму, которая отправляет сообщения на эту страницу, и посмотрите, что получится:

<form action="/am/ldap/getDepartmentGroups.php" method="post">
  <select name="dept">
    <option value="extern">External</option>
    ...etc
  </select>
  <input type="submit" value="Submit">
</form>

Если вы по-прежнему получаете пустой массив в качестве вывода, значит, есть проблема в PHP и / или на сервере.

В противном случае, возможно, попробуйте использовать функцию jQuery ajax, так как вызов post jsut вызывает это в любом случае:

$.ajax({
  type: 'POST',
  url: '/am/ldap/getDepartmentGroups.php',
  data: { department: dept },
  success: function(data) {
    alert(data);
  }
});

РЕДАКТИРОВАТЬ: Ах, вы сказали в комментарии, что вы используете CodeIgniter. Я считаю, что CI удаляет массив $_POST, вам нужно будет использовать $this->input->post вместо этого. Чтобы получить переменную department, вы должны написать $this->input->post('department')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...