Home > Article > Backend Development > JS ajax background interaction
/***************************************************后台交互**************************************************/ /** * 状态切换 * @param {Object} obj * @param {Object} table * @param {Object} fieldAndValue * @param {Object} whereFieldAndId */ function switchStatus (obj, table, fieldAndValue, whereFieldAndId){ var val = (obj.src.match(/yes.gif/i)) ? 0 : 1; fieldAndValue += '##'+ val; $.post('/wxbackend/common/switchStatus/flag/0', {'table' : table, 'fieldAndValue' : fieldAndValue, 'whereFieldAndId' : whereFieldAndId}, function(data){ if (data > 0) { if (fieldAndValue.indexOf('1') > 0) obj.src = '/images/yes.gif'; else obj.src = '/images/no.gif'; } }); } /** * 编辑单个字段 * @param {Object} obj * @param {Object} table * @param {Object} fieldAndValue * @param {Object} whereFieldAndId */ function editField(obj, table, fieldAndValue, whereFieldAndId) { var tag = obj.firstChild.tagName; if (typeof(tag) != "undefined" && tag.toLowerCase() == "input") { return; } /* 保存原始的内容 */ var org = obj.innerHTML; var val = Browser.isIE ? obj.innerText : obj.textContent; /* 创建一个输入框 */ var txt = document.createElement("INPUT"); txt.value = (val == 'N/A') ? '' : val; txt.style.width = (obj.offsetWidth + 12) + "px" ; /* 隐藏对象中的内容,并将输入框加入到对象中 */ obj.innerHTML = ""; obj.appendChild(txt); txt.focus(); /* 编辑区输入事件处理函数 */ txt.onkeypress = function(e) { var evt = Utils.fixEvent(e); var obj = Utils.srcElement(e); if (evt.keyCode == 13) { obj.blur(); return false; } if (evt.keyCode == 27) { obj.parentNode.innerHTML = org; } } /* 编辑区失去焦点的处理函数 */ txt.onblur = function(e) { if (Utils.trim(txt.value).length > 0 && txt.value != org) { fieldAndValue += '##'+ Utils.trim(txt.value); $.post('/wxbackend/common/switchStatus/flag/1', {'fieldAndValue' : fieldAndValue, 'table' : table, 'whereFieldAndId' : whereFieldAndId}, function(data){ obj.innerHTML = (data != '') ? data : org; }, 'text'); } else { obj.innerHTML = org; } } } /** * 修改单条记录 * @param {Object} obj * @param {Object} table * @param {Object} fieldList * @param {Object} whereFieldAndId */ function updateRowByPrimaryKey(obj, table, fieldList, whereFieldAndId){ var fields = new Array(); fields = fieldList.split(","); var fieldAndValue = ''; for (i=0;i<fields.length ;i++){ fieldAndValue += fields[i] + '=>' + $('#'+fields[i]).val() + '##'; } fieldAndValue = fieldAndValue.substring(0, fieldAndValue.length - 2); $.post('/wxbackend/common/InsertNewOrUpdateRow/option/update', {'table' : table, 'fieldAndValue' : fieldAndValue, 'whereFieldAndId' : whereFieldAndId}, function(data){ if (data == 1) alert('添加成功!'); else alert('失败!'); } ); } /** * 获取数据 * @param {Object} table * @param {Object} fieldList ,分隔 * @param {Object} whereFieldAndId */ function selectData(table, fieldList, whereFieldAndId){ $.post('/wxbackend/common/selectData', {'table' : table, 'fieldList' : fieldList, 'whereFieldAndId' : whereFieldAndId}, function(data){ if (data != '') return JSON.parse(data); else return ''; } ,'text'); } /** * 新增单条记录 * @param {Object} obj * @param {Object} table * @param {Object} fieldList ,分隔 */ function insertNewRow(table, fieldList){ var fields = new Array(); fields = fieldList.split(","); var fieldAndValue = ''; for (i=0;i<fields.length ;i++){ fieldAndValue += fields[i] + '=>' + $('#'+fields[i]).val() + '##'; } fieldAndValue = fieldAndValue.substring(0, fieldAndValue.length - 2); $.post('/wxbackend/common/InsertNewOrUpdateRow', {'table' : table, 'fieldAndValue' : fieldAndValue}, function(data){ if (data == 1) alert('添加成功!'); else alert('失败!'); }); } /** * 删除单条记录 通过主键 * @param {Object} obj * @param {Object} table * @param {Object} whereFieldAndId */ function delRowByPrimaryKey(obj, table, whereFieldAndId){ $.post('/wxbackend/common/delRowByPrimaryKey', {'table' : table, 'whereFieldAndId' : whereFieldAndId}, function(data){ if (data > 0) { var parentObj = obj.parentNode; parentObj.parentNode.remove(); }else alert('删除失败!!'); }); }
PHP:
/** * 公用状态切换 */ public function actionSwitchStatus($flag) { $this->checkPrivilege('actionSwitchStatus'); $table = isset($_POST['table']) ? '{{'.trim($_POST['table']).'}}' : ''; if (empty($table)) die('0'); $fieldAndValue = isset($_POST['fieldAndValue']) ? explode('##', trim($_POST['fieldAndValue'])) : ''; $whereFieldAndId = isset($_POST['whereFieldAndId']) ? explode('#', trim($_POST['whereFieldAndId'])) : ''; if($table == '{{milk_order}}' && $fieldAndValue[0] == 'best_time'){//订奶特殊情况 $fieldAndValue[1] = strtotime($fieldAndValue[1]); } $sql = "UPDATE $table SET {$fieldAndValue[0]} = :val WHERE {$whereFieldAndId[0]} = :idVal"; $data = array('val'=>$fieldAndValue[1], 'idVal'=>$whereFieldAndId[1]); $num = YD_MysqlUtil::YD_execute($sql, $data); if($flag == 1){ $sql = "SELECT {$fieldAndValue[0]} FROM $table WHERE {$whereFieldAndId[0]} = {$whereFieldAndId[1]}"; $result = YD_MysqlUtil::YD_getOne($sql); if($table == '{{milk_order}}' && $fieldAndValue[0] == 'best_time'){//订奶特殊情况 $result = date('Y-m-d H:i:s',$result); } //修改运费同时修改面运费优惠券金额 if ($table == '{{system_setting}}' && ("{$whereFieldAndId[0]} = {$whereFieldAndId[1]}" == 'id = 6') && ('`value`' == $fieldAndValue[0])) { $sql = 'UPDATE {{coupon}} SET resist_money = :money WHERE cou_type = 9'; YD_MysqlUtil::YD_execute($sql, array('money'=>$fieldAndValue[1])); } echo $result; //echo $fieldAndValue[1]; }else echo $num; $content = Yii::app()->session['YD[admin_name]'].'修改表:'.$table.'的'.$whereFieldAndId[0].'=>'.$whereFieldAndId[1].'记录的'.$fieldAndValue[0].'=>'.$fieldAndValue[1].'字段'; YDLib::admin_log($content); } /** * 获取数据 */ public function actionSelectData() { $this->checkPrivilege('actionSelectData'); $table = isset($_POST['table']) ? '{{'.trim($_POST['table']).'}}' : ''; if (empty($table)) die('0'); $fieldList = isset($_POST['fieldList']) ? trim($_POST['fieldList']) : ''; $whereFieldAndId = isset($_POST['whereFieldAndId']) ? explode('#', trim($_POST['whereFieldAndId'])) : ''; $sql = "SELECT $fieldList FROM $table WHERE {$whereFieldAndId[0]}"; switch ($whereFieldAndId[1]) { case 'getOne': $data = YD_MysqlUtil::YD_getOne($sql); break; case 'getRow': $data = YD_MysqlUtil::YD_getRow($sql); break; case 'getAll': $data = YD_MysqlUtil::YD_getAll($sql); break; default: $data = YD_MysqlUtil::YD_getColumn($sql); break; } echo PHPTool::_ToJson($data); } /** * ajax 添加修改新纪录 */ public function actionInsertNewOrUpdateRow($option = 'insert'){ $this->checkPrivilege('actionInsertNewOrUpdateRow'); $table = isset($_POST['table']) ? '{{'.trim($_POST['table']).'}}' : ''; if (empty($table)) die('0'); $fieldAndValue = isset($_POST['fieldAndValue']) ? explode('##', trim($_POST['fieldAndValue'])) : ''; if (!empty($fieldAndValue)) { if ($option == 'insert') { $data = array(); foreach ($fieldAndValue as $value){ list($key, $val) = explode('=>', $value); $data[$key] = $val; } echo YD_MysqlUtil::YD_insertInto($table, $data) ? '1' : '0'; $content = Yii::app()->session['YD[admin_name]']." $option $table {$_POST['fieldAndValue']}"; YDLib::admin_log($content); }else { $whereFieldAndId = isset($_POST['whereFieldAndId']) ? explode('#', trim($_POST['whereFieldAndId'])) : ''; $data = array(); foreach ($fieldAndValue as $value){ list($key, $val) = explode('=>', $value); $data[$key] = $val; } $where = " {$whereFieldAndId[0]} = {$whereFieldAndId[1]} "; echo YD_MysqlUtil::YD_updateSet($table, $data, $where) ? '1' : '0'; $content = Yii::app()->session['YD[admin_name]']." $option $table {$_POST['fieldAndValue']} {$_POST['whereFieldAndId']}"; YDLib::admin_log($content); } } } /** * delRowByPrimaryKey */ public function actionDelRowByPrimaryKey() { $this->checkPrivilege('actionDelRowByPrimaryKey'); $table = isset($_POST['table']) ? '{{'.trim($_POST['table']).'}}' : ''; if (empty($table)) die('0'); $whereFieldAndId = isset($_POST['whereFieldAndId']) ? explode('#', trim($_POST['whereFieldAndId'])) : ''; $sql = "DELETE FROM $table WHERE {$whereFieldAndId[0]} = :val"; $data = array('val'=>$whereFieldAndId[1]); $num = YD_MysqlUtil::YD_execute($sql, $data); $content = Yii::app()->session['YD[admin_name]'].'通过主键'.$whereFieldAndId[0].' 删除 表:'.$table.'记录:'.$whereFieldAndId[1]; YDLib::admin_log($content); echo $num == 0 ? 0 : 1; }
Copyright Statement: This article is the original article of the blogger and may not be reproduced without the permission of the blogger.
The above has introduced the JS ajax background interaction, including aspects of it. I hope it will be helpful to friends who are interested in PHP tutorials.