json_encode问题

时间:2011-02-23 20:17:25

标签: php ajax

我有这个代码

    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 个答案:

答案 0 :(得分:1)

您可以重定向页面:

window.location = 'ok.html';

但最好使用javascript更改当前页面内容。

答案 1 :(得分:1)

PHP中的重定向通常使用

header("Location: NEWLOCATION");

NEWLOCATION是新页面的网址。

这应该在您输出页面上的任何信息之前调用,因为标题总是在任何其他内容之前发送(并且之后不能发送)。

如果您希望在输出其他内容之后使用标题功能,只需将所有输出保存在变量中,因此不要使用echo(“output”)来执行$ myvar。=“output”;

然后,在文件的末尾,您将知道是否要重定向,请执行回显($ myvar);

答案 2 :(得分:0)

将某些内容回传给浏览器然后重新指导是没有任何意义的,因为访问者无论如何都看不到该消息。

所以你可以:

  1. 不回显/打印任何东西,但将响应数组存储在数据库或会话变量中,然后使用php标题重定向转到ok.html;
  2. 使用javascript设置超时,然后在超时后使用window.location重定向。