基于HTML模板和JSON数据的JavaScript交互

为了将后台的数据处理放到前台,我们可能出现以下的代码

html

String.prototype.temp = function(obj) {
return this.replace(/\$\w+\$/gi, function(matchs) {
var returns = obj[matchs.replace(/\$/g, "")];
return (returns + "") == "undefined"? "": returns;
});
};

json

{
    "ecd":0,
    "msg" :"成功",
    "result" : [{
    "id": "32",
    "order_num": "test-001",
    "title": "test",
    "thumb": "http:\/\/40DA1265-40F6-D622-8BA5-04BA0AF72573.jpg",
    "item_id": "21",
    "price": "0.11",
    "cus_name": "test",
    "cus_tel": "10086",
    "cus_address": "北京 北京海淀区",
    "flag": "5",
    "create_time": "20160329115544",
    "update_time": "20160330120001",
    "flag_name": "订单已取消"
}],
    "locate":""
} 

js

$.progress_show('正在努力加载中');
$.ajax({
    url: site_url + 'api/order/getAll/' + status,
    type: 'get',
    dataType: 'json',
    error: doAjax.error,
    success: function (response) {
        $.progress_hide();
        if (response.ecd == '0') {
            var htmlList = '', htmlTemp = $("textarea.js-order-tmp").val();
            if (typeof response.result === 'undefined') {
                htmlList = $("textarea.js-no-order-tmp").val();
            } else {
                $.each(response.result, function (i, el) {
                    htmlList += htmlTemp.temp(el);
                });
            }
            $('.js-status-' + status).empty().append(htmlList);
            returntrue;
        } else {
            return $.alert(response.msg);
        }
    },
});