2013-06-26 3 views
0

Я использую ниже трюк, чтобы вернуть ответ успеха с AJAX:CakePHP - правильный способ вернуть AJAX ответ успеха?

//In controller 
echo 'success'; 

//In Javascript 
if(response == 'success'){ 
    //redirect 
    window.location.href = '/users/profile/'; 
} 

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

Cannot modify header information - headers already sent by (output started at ... 

Так что да, я знаю, что это вызвано echo перед перенаправлением.

Итак, есть ли способ вернуть ответ успеха? Не нужно быть сообщением, достаточно true или false.

[EDIT]

С помощью exit('success'), он отлично работает, но это лучший способ?

Спасибо.

+2

если ваша функция обрабатывает запрос ajax, тогда их нет необходимости в перенаправлении ..! не могли бы вы показать нам код ... и вы могли бы сделать перенаправление из JS-части внутри if (response == 'success') ...! –

+0

привет спасибо. Внезапно он отлично работает, не меняя никакого кода. Я думал, что использование 'exit ('success')' исправлено, но я переделаю изменение и все еще работает. – hrsetyono

ответ

2

Лучше перенаправить с javascript.

//In controller 
echo 'success'; exit; 

//In Javascript 
if(response == 'success'){ 
    window.location = 'your-controller-action'; 
} 

EDIT

Вы можете иметь пространство before/after php Opening/Closing tags in controller and models. Удалите все закрывающие теги со всех контроллеров и моделей и любые пробелы перед открытием тегов. Затем проверьте результат.

+0

Да, я использую 'window.location' для перенаправления, но он все равно дает мне' Невозможно изменить информацию заголовка' – hrsetyono

+1

Проверьте обновленный ответ. –

+1

@DarcCode Это ошибка PHP. Невозможно, чтобы перенаправление JavaScript могло передать это сообщение. – JJJ