if (!this.HTTPServiceUtils) {
HTTPServiceUtils = {
};
}
(function () {
var XMLHttpReq ={
_objPool: [],//xmlhttp建立连接池
_getInstance:function (){
for (var i = 0; i < this._objPool.length; i ++){
if (this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4){
return this._objPool[i];
}
}
// IE5中不支持push方法
this._objPool[this._objPool.length] = this._createObj();
return this._objPool[this._objPool.length - 1];
},
_createObj: function (){
if (window.XMLHttpRequest){
var objXMLHttp = new XMLHttpRequest();
}else{
var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
for(var n=0; n<MSXML.length; n++){
try{
var objXMLHttp = new ActiveXObject(MSXML[n]);
break;
}catch(e){}
}
}
// mozilla某些版本没有readyState属性
if (objXMLHttp.readyState == null){
objXMLHttp.readyState = 0;
objXMLHttp.addEventListener("load", function (){
objXMLHttp.readyState = 4;
if(typeof objXMLHttp.onreadystatechange == "function"){objXMLHttp.onreadystatechange();}
}, false);
}
return objXMLHttp;
},
// 发送请求(方法[post,get], 地址, 数据, 回调函数,数据模板)
sendReq: function (method, url, data, callback,dataset){
var objXMLHttp = this._getInstance();
with(objXMLHttp){
try{
open(method, url, true);
// 设定请求编码方式
setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
send(data);
onreadystatechange = function (){
if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304)){
callback(objXMLHttp,dataset);
}
}
}catch(e){alert(e);}
}
}
};
var DynamicFields;//MAP格式 DynamicFields.keys()所有的键 DynamicFields.values()所有的值
var Datasetname;
var Dataset;
var _xml;
//设置map字段
function setMap(_dynamicfields){
var map = new Map();//创建map对象
var fields = new Array();
fields = fields.str2arr(_dynamicfields);
for(var i in fields) {
if(!isNaN(i)){
var xx = new Array();
xx = fields[i].split(":");
map.put(xx[0],xx[1]);
}
}
DynamicFields = map;
}
//数组对象的扩展增加一个字串转数组的方法
Array.prototype.str2arr=function(string){
var s;
if(string.indexOf(";")!=-1) s=string.split(";");
if(string.indexOf("^")!=-1) s=string.split("^");
arr=this;
for(i=0;i<s.length;i++){
arr = arr.concat(s[i]);
}
return arr;
}
//清除数组内容
Array.prototype.clear=function(){
this.splice(0,this.length);
}
// 回调函数jsonResponse
function jsonResponse(originalRequest,_dataset) {
var fields = new Array();
fields = _dataset._fields.keys();
var name = _dataset._name;
var myobj = eval("(" + originalRequest.responseText + ")");
_xml = JsonToXml(myobj,name,fields)
InitialDataset(_xml,_dataset);
}
//json 到 xml 的转换
function JsonToXml(_jsonobj,_datasetname,_fields){
var xml = "<xml id=\"__"+_datasetname+"\" style=\"display: none\">";
xml = xml +"<records possibleCount=\"1\" pageCount=\"1\" loadedPages=\"1\">";
var recNum=0;
var itemCount = _jsonobj.itemCount;
var fieldsCount = _fields.length;
while(itemCount>0)
{
xml=xml+"<record id=\""+(recNum+1)+"\" pageIndex=\"1\" state=\"none\"><new>";
xml=xml+"s";//选择框占位符 true 表示勾选框勾住
for(var i=0;i<fieldsCount;i++){
xml=xml+"^"+_jsonobj.list[recNum][_fields[i]];
}
xml= xml+"</new></record>";
recNum++;
itemCount--;
}
xml = xml +"</records>";
xml = xml +"</xml>";
return xml;
}
//初始化数据集
function InitialDataset(_xml,_dataset)
{
var XMLDoc;
_dataset.clearData();
XMLDoc = new ActiveXObject("Msxml2.DOMDocument");
XMLDoc.async = false;
if (XMLDoc.loadXML(_xml))
{
$cq=XMLDoc.getElementsByTagName("xml/records")[0];
_dataset.$8p($cq,true,null,null);
return _dataset;
}
else
{
alert("初始化数据集错误!");
}
}
if(typeof HTTPServiceUtils.httpGet !== 'function'){
HTTPServiceUtils.httpGet = function(url,dataset){
XMLHttpReq.sendReq("get",url,null,jsonResponse,dataset);
}
}
if(typeof HTTPServiceUtils.httpPost !== 'function'){
HTTPServiceUtils.httpPost = function(url,parameters,dataset){
XMLHttpReq.sendReq("post",url,parameters,jsonResponse,dataset);
}
}
//初始化表格
if(typeof HTTPServiceUtils.initDataTable !== 'function'){
HTTPServiceUtils.initDataTable = function(_datatable,_dataset){
_datatable.addColumn("select");
for(var i=0;i<_dataset._fields.size();i++){
var _f = _datatable.addColumn(_dataset._fields.element(i).key);
_f.setField(_dataset._fields.element(i).key)
_f.setLabel(_dataset._fields.element(i).value)
}// DynamicFields.keys()所有的键 DynamicFields.values()所有的值
}
}
//通过模板取得一个数据集实例
if(typeof HTTPServiceUtils.initDataset !== 'function'){
HTTPServiceUtils.initDataset = function(_dynamicfields,_datasetname,_keyname){
Datasetname = _datasetname;
Dataset = BX.create("Dataset",null,_datasetname,"");
setMap(_dynamicfields);
Dataset._name = Datasetname;
Dataset._fields = DynamicFields;
Dataset._keyname = _keyname;
Dataset.addField("select","string");
for(var i=0;i<DynamicFields.size();i++){
var _f = Dataset.addField(DynamicFields.element(i).key,"string");
_f.setLabel(DynamicFields.element(i).value);
if(DynamicFields.elements[i].key == "key")
_f.setToolTip(DynamicFields.element(i).value);
}
return Dataset;
}
}
})();
分享到:
相关推荐
json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象...
- JQuery - jquery.json2xml.js - jquery.xml2json.js 2. XML 字符串转换成 JSON 对象 $.xml2json(str); 3. JSON 对象转换成 XML 字符串 $.json2xml(obj);
自己写的json与xml互转工具 简单实用
js下xml转json和json转xml
json转xml所需jar包
java工程源码实现xml和json的互转,工程已包含所jar包:commons-beanutils-1.7.0.jar、commons-collections-3.1.jar、commons-lang-2.5.jar、commons-logging.jar、ezmorph-1.0.3.jar、json-lib-2.4-jdk15.jar、xom-...
java中json 转xml 的jar
最近在搞一个json的需求,对端提供的json首字母都是大写的。这样转json起来有点难度,从csdn上贴的大神的解决方式,分值比较高。然后自己修改了下,符合自己的需求,就放在这里了。
xStream完美转换XML、JSON,包括XML转换成对象,以及对象转换成XML,以及对象转换成JSON,以及注意事项
VB解析Json转换为Xml。内有详细使用代码例子
json与xml互相转换工具类
本json库包支持由json数据自动转换成xml报文数据, 对应用的配置化开发起到重要作用,在企业的移动开发中,通过与xslt的结合,开发工作更便捷。
JSON转换为JAVA对象及日期格式转换处理 -
json格式与java类对象相互转换。json格式转换成java类对象,List,Map。类对象转换成json。
Dicom小工具(dcm转json、xml,xml转dcm等)
JSON-lib框架,转换JSON、XML不再困难
支持XML转json; var mySoapXml ='<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" '+ 'xmlns:xsd="http://www.w3.org/2001/XMLSchema" '+ 'xmlns:xsi=...
jquery.json2xml.js&&jquery.xml2json.js在jQuery的基础上实现json与xml的相互转换
java版的json与xml之间的转换的实例demo
用于在C++结构体和json/xml之间互相转换, bson在xbson中支持。 只需要头文件, 无需编译库文件。 具体可以参考example的例子