94 lines
2.6 KiB
JavaScript
94 lines
2.6 KiB
JavaScript
///////////////////////////////////////////////////
|
|
///////////// cls_mysql: 数据库操作 ///////////////
|
|
///////////////////////////////////////////////////
|
|
var cls_mysql = cls_mysql || {
|
|
|
|
//构造函数
|
|
new: function(url, func_fail_sendpack){
|
|
var mysql = {};
|
|
//php地址
|
|
mysql.url = url;
|
|
//发生错误时的回包函数
|
|
mysql.func_fail_sendpack = func_fail_sendpack;
|
|
|
|
//执行sql语句
|
|
mysql.execsql = function(method, sql, para, func_succ, pack) {
|
|
/*
|
|
method: php方法名 execsql/opensql
|
|
sql: 要执行的sql语句
|
|
para: 要执行的sql语句的参数数组
|
|
func_succ: sql语句执行成功后的回调函数
|
|
pack: 客户端发来的数据包,执行失败的话会根据pack返回客户端执行失败的结果
|
|
*/
|
|
var data = {}
|
|
data.m = method;
|
|
data.s = sql;
|
|
data.p = para;
|
|
|
|
var strdata = JSON.stringify(data);
|
|
//将=号替换为^,php收到后再替换回来,以避免=号POST传参会截断的问题
|
|
strdata = strdata.replace(/\=/g,"^");
|
|
//将+号替换为#,php收到后再替换回来,以避免+号POST传参会截断的问题
|
|
strdata = strdata.replace(/\+/g,"#");
|
|
//将&号替换为!,php收到后再替换回来,以避免&号POST传参会截断的问题
|
|
strdata = strdata.replace(/\&/g,"!");
|
|
|
|
var cfg = {};
|
|
cfg.url = mysql.url;
|
|
cfg.data = "data=" + strdata;
|
|
cfg.type = "POST";
|
|
cfg.success = function(str) {
|
|
try {
|
|
var result = JSON.parse(str);
|
|
} catch(e) {
|
|
console.log(min_now() + " 数据库执行结果转换json失败.");
|
|
console.log(str);
|
|
console.log(data);
|
|
return;
|
|
}
|
|
|
|
if (result.state != 0) {
|
|
console.log(min_now() + " 请求" + mysql.url + "失败.");
|
|
console.log(result);
|
|
console.log(data);
|
|
|
|
if (pack) {
|
|
console.log(JSON.stringify(pack));
|
|
//返回客户端执行失败的结果
|
|
if (mysql.func_fail_sendpack) {
|
|
pack.data = {};
|
|
pack.data.state = result.state;
|
|
pack.data.error = result.error;
|
|
mysql.func_fail_sendpack(pack);
|
|
}
|
|
}
|
|
} else {
|
|
//执行sql成功执行回调函数
|
|
// console.log(result);
|
|
if (func_succ) {
|
|
func_succ(result.data);
|
|
}
|
|
}
|
|
};
|
|
cfg.error = function(str){
|
|
console.log(min_now() + " 请求" + mysql.url + "失败.");
|
|
console.log(str);
|
|
console.log(data);
|
|
|
|
if (pack) {
|
|
console.log(JSON.stringify(pack));
|
|
//返回客户端执行失败的结果
|
|
if (mysql.func_fail_sendpack) {
|
|
pack.data = {};
|
|
pack.data.state = 99;
|
|
pack.data.error = "请求数据库失败.";
|
|
mysql.func_fail_sendpack(pack);
|
|
}
|
|
}
|
|
};
|
|
min_http(cfg);
|
|
}
|
|
return mysql;
|
|
}
|
|
}
|