#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, даже тех, которые были созданы в основном приложении.