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