2013-04-25 5 views
0

У меня есть таблица html в приложении, написанном с javascript (и jquery) и php. Содержимое таблицы хранится в таблице MySql.Предоставление обратной связи после перенаправления заголовка Php

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

Когда пользователь заполняет форму, они нажмите кнопку Сохранить, и форма будет отправлена ​​на страницу чистого PHP, который сохраняет данные в таблицу, а затем перенаправляет на исходную страницу с таблицей на, используя

$url = BASE_URL . '/admin/pages/finance/pricing/pricing_schedule.php'; 

header('Location: '.$url);  //Redirect to the right page 

exit();  

Я делаю это, потому что я не хочу, чтобы сообщение:

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

, чтобы показать, должен ли пользователь обновлять по любой причине.

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

Когда пользователь нажимает «Сохранить» в диалоговом окне jquery ui, окно закрывается при отправке формы, поэтому я не могу предоставить обратную связь, потому что ошибка еще не произошла.

Когда мы находимся на странице php, как только мы перенаправляемся на исходную страницу с таблицей, любые ошибки, полученные, теряются.

Может ли кто-нибудь предложить какие-либо предложения?

+2

Не удалось сохранить ошибки в переменной '$ _SESSION' и распечатать их на перенаправленной странице? – verbumSapienti

+0

Спасибо @verbumSapienti, который отлично поработал. Если вы хотите вставить ответы, я приму это –

+0

отлично - рад помочь! – verbumSapienti

ответ

2

можно хранить любые ошибки в переменной $_SESSION и распечатать их на перенаправлен страницу.

0

Как насчет простого параметра GET?

Что-то на линии:

header('Location: ' . $url . '?success=false&reason=blah'); 

И на этой странице в $url, вы бы сначала искать ценности $_GET['success']. Если это не "success", повторите дополнительный HTML, чтобы он не был успешным.

if ($_GET['success'] == "true") { 
    echo "<p>SUCCESS!</p>"; 
    .. 
} else { 
    echo "<p>FAILED!</p>"; 
    .. 
} 
+0

Спасибо, я подумал об этом, но если пользователь обновит эту страницу, ошибка все равно будет отображаться. –

+0

и те же комментарии, что и для ответа @ ganshjr – SirDarius

0

Рассмотрите возможность отправки формы через AJAX, чтобы избежать обновления страницы.

Проверьте этот учебник: http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/

решение (не проверено)

JQuery Код:

var form_data = $('#save_period_form').serialize(); alert(form_data); 
$.ajax({ 
type: "POST", 
url: "period_submit.php", 
data: form_data, 
dataType: 'html', 
success: function(returninfo) { 
    if(returninfo=='1'){ 
    alert('finish'); 
    //will redirect to pricing schedule page after the user has pressed 'ok' on the alert popup. 
    window.location.assign('/admin/pages/finance/pricing/pricing_schedule.php'); 
} else { 
    alert('error occured'); 
} 
} 
}); 

PHP код:

//Commented header redirection code because it's being done in the javascript code now. 
//$url = BASE_URL . '/admin/pages/finance/pricing/pricing_schedule.php'; 

//header('Location: '.$url);  //Redirect to the right page 

//Assuming your save has been successful, we echo value '1'. Else echo something else.. 
echo '1'; 
exit(); 
+0

Спасибо, это отличная идея, но, похоже, она не работает. Моя функция - var form_data = $ ('# save_period_form'). Serialize(); \t \t \t \t alert (form_data); \t \t \t \t $ .ajax ({ типа: "POST", URL: "period_submit.php", данные: form_data, успех: функция() { предупреждение ('конец');} }); и он правильно дает form_data, но публикует предупреждение «закончить». Затем он переходит на страницу таблицы html с данными формы как GET в URL. –

+0

Проверьте мое решение выше. Он должен работать, но я не тестировал его как таковой. Примечание. Я использую относительный путь для перенаправления на файл pricing_schedule.php. Правильно, если неправильно. – Mysteryos

0

другой идеей является перенос сообщения с помощью хэш в URL:

if (isset($_POST['submit'])) { 
    ... 
    header("Location: ".$_SERVER["REQUEST_URI"]."#".urlencode($msg)); 
    ... 
} 
+1

этот подход имеет нежелательный побочный эффект, который, если эта сгенерированная связь когда-либо будет использоваться совместно, каждый пользователь увидит сообщение об ошибке без уважительной причины. – SirDarius

+0

Да, я согласен с вами. –

Смежные вопросы