加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

QeePHP中采用Ajax实现多个输入框的联动关联查询

发布时间:2020-12-16 02:06:49 所属栏目:百科 来源:网络整理
导读:客户端页面: td select name="product_id" style="width: 8em" id=" product_id " onchange="setNetAndSer(' /far800express/index.php?controller=waybillinformationaction=setnetandserproduct_id='+this.value )" option value=""/option ?php foreach

客户端页面:

<td>

<select name="product_id" style="width: 8em" id="product_id"

onchange="setNetAndSer('/far800express/index.php?controller=waybillinformation&action=setnetandser&&product_id='+this.value)">

<option value=""></option>

<?php foreach ($products as $product):?>

<option value="<?php echo $product->product_id ?>"

<?php if ($product->product_id==$waybill->product_id): ?>

<?php echo "selected='selected'" ;?> <?php endif;?>><?php echo $product->product_name ?></option>

<?php endforeach;?>

</select>

</td>

<td align="right">网络</td>

<td> <input id="network_code"name="network_code"value="<?php echo $waybill->network_code;?>" type="text" style="width: 90px" onfocus="this.blur()">

<td align="right">服务类别</td>

<td><input id="service_code"name="service_code"value="<?php echo $waybill->service_code;?>" type="text" style="width: 90px" onfocus="this.blur()">

说明:注意客户端页面中触发onchange事件之后Ajax中传递路径的写法,不同于一般绝对路径的写法,因为在框架中会先到控制器动作方法中,而不是直接到一个页面!这点儿上可能会有一些差别存在!区别之前W3c中关于Ajax部分的例子,那种写法如下:

xhr.open("post",'<?php echo url('scannedmanage/upload1')?>&file_name=' + fileList[i].name,true);

xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded; boundary=' + new Date().getTime());

xhr.send(fileList[i]);


客户端页面脚本:

function setNetAndSer(url) {

$.ajax({

url:url,

type:'post',

dataType:'json',

success:function(result){

if (result.net.network_name_en!=null) {

$("#network_code").val(result.net.network_code);

//服务

$("#service_code").val(result.ser.service_code);

$("#service_name_en").val(result.ser.service_name_en);

//燃油附加费率

console.dir(result.baf.price_rates);

$("#baf").val(result.baf.price_rates);

//主帐号

jQuery("#main_account").empty();

for( index in result.account)

{

jQuery("#main_account").append("<option value='"+result.account[index].main_account+"'>"+result.account[index].main_account+"</option>");

}

}

}

});

}

说明:注意HTML DOM操作的写法,如result.ser.service_code


后台控制器动作方法:

function actionSetnetandser(){

//查询产品 获取产品

$pro = Product::find('product_id=?',request('product_id'))->getOne();

$net = Network::find('network_id=?',$pro->network_id)->asArray()->getOne();

$ser = Service::find('service_id=?',$pro->service_id)->asArray()->getOne();

$baf = Baf::find('network_id=?',$pro->network_id)->asArray()->getOne();

$account = Proxy::find('network_id=?',$pro->network_id)->asArray()->getAll();

echojson_encode(array(

'net' => $net,

'ser' => $ser,

'baf' =>$baf,

'account' => $account

));

exit();

}

说明:json_encode()方法将数组类型的数据转换为Json类型的,并打印输出来让客户请求端接收后台(控制器动作方法)处理的数据!




补充(于2015年3月16日):

在做项目中涉及到取件地、销售员、取件员与所属部门关联的情况,最终没有采用Ajax的方式,采用的是在后台将与所属部门对应的取件地、销售员、取件员数据分别查出来,并按对应的关联逻辑关系存放到新建的数组中,将数组数据转换为Json数据并返回到前台,前台采用jQuery的方法来控制部门的变化引起取件地、取件员、销售员的变化!

前台JS控制代码:

后台代码:

//取件地、销售员、取件员与所属部门关联
$receive_address = array ();
$salesperson = array ();
$receiver = array ();
foreach ( $departments as $department ) {
//取件地
$address = Area::find ( 'department_id= ?',$department->department_id )->getAll ();
foreach ( $address as $addr ) {
$receive_address [] = array (
"department_id" => $department->department_id,
"receive_address" => $addr->receive_address,
"area_id" => $addr->area_id
);
}
//销售员
$sal = User::find ( 'department_id= ?',$department->department_id )->where ( 'salesperson = ?',1 )->getAll ();
foreach ( $sal as $sa ) {
$salesperson [] = array
("department_id" => $department->department_id,"salesperson" => $sa->user_name,"user_id" => $sa->user_id );}//取件员$rec = User::find ( 'department_id= ?',$department->department_id )->where ( 'receiver = ?',1 )->getAll ();foreach ( $rec as $re ) {$receiver [] = array ("department_id" => $department->department_id,"receiver" => $re->user_name,"user_id" => $re->user_id );}}$area_id = Helper_Array::groupBy ( $receive_address,'department_id' );$salesperson_id = Helper_Array::groupBy ( $salesperson,'department_id' );$receiver_id = Helper_Array::groupBy ( $receiver,'department_id' );$this->_view ["area_id"] = $area_id;$this->_view ["salesperson_id"] = $salesperson_id;$this->_view ["receiver_id"] = $receiver_id;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读