jQuery Ajax сообщение об успехе показывает большой файл HTML - PullRequest
1 голос
/ 10 июня 2009

Я использую jQuery в своем приложении, разработанном с использованием cakePHP и MySQL.

В этом коде jQuery

$.ajax({
    type: "POST",
    url: "./updateField",
    data: "name="+fieldname,
    success: function(msg){
                 alert( "Data Saved: " + msg);
             }//success
});//ajax

операции с базой данных выполняются правильно, но если я использую оператор оповещения, он показывает мне большой HTML-файл ... Не знаю, почему это происходит.

Ответы [ 4 ]

4 голосов
/ 10 июня 2009

Показывает HTML, потому что это то, что вы получаете с сервера. Я полагаю, это происходит потому, что ваш вызов AJAX на самом деле не мешает отображению страницы, а не возвращает структуру XML или Json. Я не знаю, какие у вас есть возможности в CakePHP для возврата XML или Json, а не для рендеринга страницы, но источник проблемы определенно на стороне сервера, а не на стороне клиента.

2 голосов
/ 10 июня 2009

Я считаю, что по умолчанию Cake не запускает запросы Ajax через основной макет, поэтому там не должно быть МОСТ html. Если нет, вы можете принудительно указать, какой макет можно использовать, специально вызвав метод рендеринга для контроллера и установив макет в «ajax». Справка: http://book.cakephp.org/view/57/Controller-Methods#render-428

У меня также были проблемы с включенной отладкой, поскольку все операторы SQL записывались в таблицу HTML в нижней части запросов AJAX и вызывали некоторые серьезные проблемы с синтаксическим анализом, когда тип данных должен был быть AJAX. Это, вероятно, хак, но я сделал следующее, чтобы обойти это.

В главном AppController в beforeFilter () я добавил следующее (убедитесь, что все методы beforeFilter вашего другого контроллера вызывают родительский метод):

if ($this->RequestHandler->isAjax()) {
      $db =& ConnectionManager::getDataSource('default');
      $db->fullDebug = false;
} 

В торт / libs / model / datasources / dbo_source.php примерно в строке 2074 в моей версии я изменил

if (Configure::read() > 1) { 
  $this->showLog(); 
} 

до

if (Configure::read() > 1  && $this->fullDebug) { 
  $this->showLog(); 
} 
1 голос
/ 10 июня 2009

Потому что это ответ от POST ...

0 голосов
/ 10 июня 2009

Попробуйте добавить больше параметров в функцию успеха - первый параметр может вернуть не фактический результат, а отправителя или что-то подобное.

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