Ajax-форма cakephp не работает при типе POST

#ajax #forms #cakephp #post #prototypejs

#ajax #формы #cakephp #Публикация #prototypejs

Вопрос:

Я разработал сайт с использованием cakephp 1.1, в нем много элементов ajax, позволяющих обновлять несколько элементов одновременно, и они работали довольно хорошо. Сейчас я перехожу на cakephp 1.3, но у меня нет такого большого опыта.

Благодаря этому блогу я смог обновить несколько разделов, но вскоре я снова застрял.

Моя текущая проблема связана с ajax-формой, которая не завершает запрос на URL ‘/ logs / logIn’ (‘/ controller / action’).

После отправки формы Firebug выдает мне сообщение об ошибке: «POSThttp://localhost/logs/logIn 404 не найден», запрос прерывается в функции request() прототипа, строка 1530:

 this.transport.send(this.body);
  

Когда я пишу URL-адрес непосредственно в браузере, сайт, похоже, работает так, как я и ожидал. И когда я меняю тип формы с ‘POST’ на ‘GET’, запрос ajax выполняется, и ответ тот, который я ожидал, но мне ДЕЙСТВИТЕЛЬНО нужно сделать это с помощью ‘POST’.

Я прочитал много форумов, на которых обсуждаются подобные вопросы, но ни одно предложение не помогло мне решить проблему:

  • Я проверил свои файлы hhtp.conf и .htaccess, они, кажется, в порядке в соответствии с инструкциями по установке (но я не уверен).
  • Запрашиваемое мной действие не использует никакого представления (фактически, функция ‘GET’ и прямой URL запрашивает функцию без необходимости в файле просмотра log_in.ctp), и я создал соответствующее представление при попытке выполнить ajax-запрос ‘POST’, но он все еще не работает.

Я использую последнюю версию scriptaculous и protoype.js (1.7), я работаю с Firefox 3.6.17 на Ubuntu.

Заранее благодарю за любую хитрость, подсказку, совет или все, что вы можете сделать, чтобы помочь мне.

Ответ №1:

Я, наконец, исправил проблему. Это было связано с компонентом безопасности cake.

Все, что я сделал, это установил переменной $validatePost значение false.

Я понял, что проверка post была применена к сообщениям сторонних разработчиков, но, похоже, cake выполняет проверку для запроса enery post, даже тех, которые были созданы в основном приложении.