проблема с json_encode - PullRequest
       1

проблема с json_encode

0 голосов
/ 23 февраля 2011

У меня есть этот код

    if($_POST){
    // response hash
    $response = array('type'=>'', 'message'=>'');

    try{
        // do some sort of data validations, very simple example below
        $required_fields = array('name');
        foreach($required_fields as $field){
            if(empty($_POST[$field])){
                throw new Exception('field is empty');
            }              
        }

        // ok, field validations are ok
        // now add to data to DB, Send Email, ect.

        // let's assume everything is ok, setup successful response
        $response['type'] = 'success';
        $response['message'] = "Done";
    }catch(Exception $e){
        $response['type'] = 'error';
        $response['message'] = $e->getMessage();
    }
    // now we are ready to turn this hash into JSON
    print json_encode($response);
    exit;
}

, и я хочу перенаправить на страницу (ok.html) после «успеха».Как я могу сделать это

С уважением

Ответы [ 3 ]

1 голос
/ 23 февраля 2011

Перенаправления в PHP обычно выполняются с использованием

header("Location: NEWLOCATION");

, где NEWLOCATION - это URL-адрес новой страницы.

Это должно быть вызвано перед выводом любой информации на вашу страницу, так какЗаголовки всегда отправляются перед любым другим содержимым (и не могут быть отправлены впоследствии).

Если вы хотите использовать функцию заголовка даже после того, как вы выделили что-то еще, просто сохраните все свои выходные данные в переменной, поэтому вместоof echo ("output") do $ myvar. = "output";

И затем, в конце файла, где вы узнаете, хотите ли вы перенаправить или нет, выполните echo ($ myvar);

1 голос
/ 23 февраля 2011

Вы можете перенаправить страницу:

window.location = 'ok.html';

Но лучше изменить содержимое текущей страницы, используя javascript.

0 голосов
/ 23 февраля 2011

Нет смысла выводить что-либо в браузер, а затем перенаправлять, так как посетитель все равно не увидит сообщение.

Так что вы можете:

  1. Ничего не выводить / выводить, кроме сохранения массива ответов в базе данных или переменной сеанса, а затем с помощью перенаправления заголовка php перейти на ok.html;
  2. Используйте javascript, чтобы установить тайм-аут, а затем перенаправить, используя window.location после тайм-аута.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...