select选择标签与Ajax运用

有时候在写页面的时候会碰上需要使用到select选择标签的情景,它需要我们从后端拿到想要的数据,然后返回前端,展示,在一张表上,是比较容易做到的,但是在双表或者多表,就需要用到Ajax,通过Ajax完成从另一张表中拿到数据再和这个表一起加载到前端

这里假设有两张表smbms_bill表和smbms_provider表,然后bill订单表有供应商表的ID,通过这个ID查到供应商表。

bill订单表,其中providerId是关联provider表

 provider表

 可以看到下图是bill订单表的字段,但是供应商不属于它的表,表中只有providerId这个字段,让他们关联起来就是一个难题。

起初,我们试着将供应商表单独查出来,通过HttpServletRequest传过去,可以将所有供应商查出来,但是在from表单中就会出现问题,因为提交表单后修改的是Bill类,与供应商名字好像没有关系,这时候又想,表单返回的是什么,拿到那个名字,再查询provider表的id,然后让它的id赋值给bill表中的providerId,这样似乎更加麻烦。

 //拿到所有的供应商
      //  List<String> pros = providerService.getprovider();
      //request.setAttribute("pros", pros);
后面发现使用Ajax更加方便!

把查到provider的id和名称封装成map,然后通过list,放入map,返回给前端,前端通过Ajax拿到这个数据,进行渲染。

后端controller层

    //查询供应商
    @RequestMapping("/getProviderList")
    @ResponseBody
    public List<Map<String,Object>> getProviderList(){

        List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
        List<Provider> providers = providerService.getProviderAll();
       
        for(int i = 0;i<providers.size();i++){
            Map<String,Object> obj = new HashMap<String,Object>();
            obj.put("id", providers.get(i).getId());
            obj.put("proName", providers.get(i).getProName());
            result.add(obj);
        }

        System.out.println(result);
        return result;

    }

js部分

$.ajax({
		type:"GET",//请求类型
	//	url:"ProviderManagerController.do?getProviderList",
		url:path+"/Provider/getProviderList",//请求的url
		data:{},//请求参数

		dataType:"json",//ajax接口(请求url)返回的数据类型
		success:function(data){//data:返回数据(json对象)
			data = JSON.parse(data);
			console.log(data+"11111")
			if(data != null){
				var pid = $("#pid").val();
				console.log(pid);
				$("select").html("");//通过标签选择器,得到select标签,适用于页面里只有一个select
				var options = "<option value=\"0\">--请选择--</option>";
				for(var i = 0; i < data.length; i++){
					//alert(data[i].id);
					//alert(data[i].proName);
					if(pid != null && pid != undefined && data[i].id == pid ){
						options += "<option selected=\"selected\" value=\""+data[i].id+"\" >"+data[i].proName+"</option>";
					}else{
						options += "<option value=\""+data[i].id+"\" >"+data[i].proName+"</option>";
					}
					
				}
				$("select").html(options);
			}
		},
		error:function(data){//当访问时候,404,500 等非200的错误状态码
			validateTip(providerId.next(),{"color":"red"},imgNo+" 获取供应商列表error",false);
		}
	});

页面部分

        <div>
            <label for="providerId">供应商:</label>
            <input type="hidden" value="${bill.providerName}" id="pid" />
			<select name="providerId" id="providerId">
		    </select>
        </div>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值