这几天使用到dwz中查找返回的插件,发现如果传递有中文参数值时,在服务端就会request不到,而且这种情况出现在chrome和IE。查看了一下源代码,发现最终提交的是以get的方式进行ajax提交,所以会导致中文问题。
那么我决定对这个查找返回的插件进行改造一下,原本页面上的代码需要这么写,
<a class="btnLook" href="${path}/guidance/doctor/lookUpWithHospital?isLookup=1&likeHospitalName={hospitalName}&likeDoctorName=${model.name }" lookupGroup="">查找带回 </a>
我把这个代码调整为
<a class="btnLook" data="isLookup=1&likeHospitalName={hospitalName}&likeDoctorName=${model.name }" href="${path}/guidance/doctor/lookUpWithHospital" lookupGroup="" type="POST" > 查找带回 </a>
主要是把参数独立出来作为data,并且新增了type的提交方式。
这里只是调整了页面上的代码,那么js需要怎么调整呢?如下:
- dwz.database.js文件lookup方法click事件修改如下:
var data = {}; if($this.attr("data")) data = unescape($this.attr("data")).replaceTmById($(event.target).parents(".unitBox:first")); var type = $this.attr("type") || ""; $.pdialog.open(url, "_blank", $this.attr("title") || $this.text(), options , data , type);
其中 data , type为新增
- dwz.dialog.js文件open方法修改如下:
open:function(url, dlgid, title, options,data,type) { ... if(dialog) { ... } else{ ... jDContent.loadUrl(url, data, function(){ .... },type); ..... } }
其中data 和 type为新增
- dwz.core.js文件loadUrl方法修改为如下:
loadUrl: function(url,data,callback,type){ $(this).ajaxUrl({url:url, data:data, callback:callback , type:type}); }
其中: type:type为新增
其实这里主要是仿照了列表页搜索的功能(搜索也有查找中文,而且最终也是用了ajax的post方式提交,我们需要思考为什么这样就不会出现中文问题呢?)