# AJAX **Repository Path**: Jlasp/ajax ## Basic Information - **Project Name**: AJAX - **Description**: 本来只是想在Pjt里面作为一个加载页面的小程序,经过扩展后支持Ajax,自动解析Json数据,内置require,支持AMD标准的模块加载;多模块异步无序加载;多模块异步顺序加载;比一些常用的require库小,功能少,算是又造轮子了。 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-27 - **Last Updated**: 2021-09-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AJAX 本来只是想在Pjt里面作为一个加载页面的小程序,经过扩展后支持Ajax,自动解析Json数据,内置require,支持AMD标准的模块加载;多模块异步无序加载;多模块异步顺序加载;比一些常用的require库小,功能少,算是又造轮子了。 Pjt项目:[moasp/PithyJt](http://git.oschina.net/moasp/PithyJt) ## AJAX语法 语法:AJAX( url:string [, method:string] [, data:string|array] [, headers:array] [, callback:function] [, error:function] ) 数据类型相同的参数必须按顺序出现,不同数据类型的参数,顺序可任意。 例如: ```javascript AJAX(callback, url, method); ``` 但是不可以下面这样写。 ```javascript AJAX(callback, method, url); ``` callback回调的第一个参数为ajax请求来的text或者json数据。 error回调只有在json数据解析失败或者ajax请求失败时才会调用。 如果服务器返回的content-type为test/json或者application/json,callback第一个参数为json对象,不是字符串。 ```javascript //请求a.html页面,返回请求内容res AJAX('a.html', function(res){ console.log(res); }); ``` ## `AJAX.base` 定义AJAX以及require的基础路径,默认base为当前请求目录。 ## `AJAX.require` 引用js模块,多个模块的引用是异步的,不保证调用顺序,可以保证callback的参数顺序同name提供的顺序一致。 引用不能处理模块之间的依赖,请注意。 语法1:AJAX.require(name:strins[, name2:string[..., namen:string]][, callback:function]); 语法2:AJAX.require(name:array[, base:string][, callback:function]); 语法1中,name - namen 为js文件路径,可同时引用多个 语法2中,name为js路径的数组,base为基础路径,会拼接到前面的name数组,如果不定义,默认使用全局base 回调函数的参数同name参数的顺序一致; 下面几种方法功能完全一致: ```javascript AJAX.require('../src/pithy.teemplate.helper.js', '../src/pithy.teemplate.extends.js', function(helper, _extends){ //statement }); ``` ```javascript AJAX.require(['../src/pithy.teemplate.helper.js', '../src/pithy.teemplate.extends.js'], function(helper, _extends){ //statement }); ``` ```javascript AJAX.require(['pithy.teemplate.helper', 'pithy.teemplate.extends'], '../src/', function(helper, _extends){ //statement }); ``` ```javascript AJAX.base('../src/'); AJAX.require('pithy.teemplate.helper', 'pithy.teemplate.extends', function(helper, _extends){ //statement }); ``` ## `AJAX.next` 同require使用同样的语法,实现同样的功能。 唯一区别是,require中模块引用是无序的,next会按照name提供的顺序来引用模块。 ## 模块定义 模块定义可以直接通过module.exports或者return导出。 同时,提供define方法,遵循AMD标准导出模块。 ### 不使用define ```javascript module.exports = {name : 'module1'}; //或者 return {name : 'module1'}; ``` ### 使用define 模块内部可以使用define,并可以处理模块依赖。 ```javascript //通过回调函数导出 define(function(){ module.exports = {}; }); //通过回调函数return导出 define(function(){ return {}; }); //直接导出,不借助回调函数 define({}); ``` define可以处理模块依赖,依赖模块使用数组定义。 模块依赖只能通过define处理。 ```javascript define(['A'], function(a){ module.exports = { func : function(){ a.func(); } }; }); //依赖多个模块 define(['A', 'B'], function(a, b){ module.exports = { func : function(){ a.func(); } }; }); ``` 模块内部不提供require方法,如果提供的话,内部实现为同步调用,非常不推荐,所以这里就干脆不提供了。