谈ajax返回字符串的两种形式

  当javascript语句向服务器端发起ajax请求后,如果一切顺利,会从服务器端收到响应数据,浏览器会把这个响应字符串转交给回调函数处理。按我的经验,响应字符串有两种比较好的形式,一种是json,一种是html。下面以php5+smarty服务端开发模式为例作简要介绍:

  1. json方式:
    服务端对请求数据作如下处理:

    $param1 = $_POST["param1"];
    $result_array = foo($param1);
    $json_array = json_encode($result_array);
    echo($json_array);
    

    那么函数foo的返回值就以json数组的形式返回给客户端,这时直接用eval的方法将返回值赋给某个javascript变量就可以使用了。

  2. html方式:
    服务端对请求数据作如下处理:

    $param1 = $_POST["param1"];
    $result_array = foo($param1);
    $tpl = new Smarty();
    $tpl->assign("result", $result_array);
    $html = $tpl->fetch("foo1.html");
    echo($html);
    

    那么函数foo的返回值会被assign到一个smarty模板里,通过smarty的fetch方法,获得一段html代码,这时直接把html代码赋给某个div的innerHTML属性就可以了。

  第一种方式遵循了清晰的MVC结构。由于javascript还需处理返回的数组,所以适合响应数组比较简单的情况,不适合大段html代码的渲染。第二种方式将模板和JS、PHP进行了良好的分离,便于维护。由于html变化后,页面的dom结构也发生变化,所以适合大段html代码的渲染,不适合交互复杂的类C/S页面。

One thought on “谈ajax返回字符串的两种形式”

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 注销 /  更改 )

Twitter picture

您正在使用您的 Twitter 账号评论。 注销 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 注销 /  更改 )

Connecting to %s