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;
|
||
}
|
||
}
|