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

  1. json方式: 服务端对请求数据作如下处理:``` $param1 = $_POST[“param1”]; $result_array = foo($param1); $json_array = json_encode($result_array); echo($json_array);

    1
    2
    3
    4
    5
    6
    7
    8
    
    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页面。