当javascript语句向服务器端发起ajax请求后,如果一切顺利,会从服务器端收到响应数据,浏览器会把这个响应字符串转交给回调函数处理。按我的经验,响应字符串有两种比较好的形式,一种是json,一种是html。下面以php5+smarty服务端开发模式为例作简要介绍:
- json方式:
服务端对请求数据作如下处理:$param1 = $_POST["param1"]; $result_array = foo($param1); $json_array = json_encode($result_array); echo($json_array);
那么函数foo的返回值就以json数组的形式返回给客户端,这时直接用eval的方法将返回值赋给某个javascript变量就可以使用了。
- 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页面。
英雄所见略同。
赞赞