JS ajax 後臺交互

/***************************************************後臺交互**************************************************/

/**
 * 狀態切換
 * @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;
	}


發佈了101 篇原創文章 · 獲贊 11 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章