標籤:jquery javascript ajax json easyui
jQuery提供了load方法可以將資料載入到頁面form表單中,但有時候我需要擷取後台json資料中某個值時,又需要賦值整個form表單,load方法沒有回呼函數所以就不行了,如果用ajax調用的話,獲得後台json資料後把json資料分析出來在一個個的賦值到form表單的每個文字框中,這樣未免太過複雜和太多代碼,所以我根據了一些大神的回答,總結了一個很好用的jQuery函數。
jQuery-load方法調用:
$(‘#form‘).form(‘load‘,URL);
頁面表單:
<span style="font-size:18px;"><form id="form" action="system/info/area_operate.html" method="post" class="default"> <input type="text" name="area_name" readOnly/> <input type="text" name="name"/><select id="type" name="type" ><option value="1">門店</option><option value="2">總部</option></select> <textarea class="easyui-validatebox" name="remark" cols="40" rows="5" required="false"></textarea></form></span>
總結的方法:
頁面調用:
<span style="font-size:18px;"><script><span style="white-space:pre"></span>$.getJSON(URL,param,function(data){<span style="white-space:pre"></span>alert(data.type);<span style="white-space:pre"></span>$("form").setForm(data);});</script></span>
把下面這段代碼放入到jQuery中取
<span style="font-size:18px;">$.fn.setForm = function(jsonValue) { alert("setForm"); var obj=this; $.each(jsonValue, function (name, ival) { var $oinput = obj.find("input:[name=" + name + "]"); if ($oinput.attr("type")== "radio" || $oinput.attr("type")== "checkbox"){ $oinput.each(function(){ if(Object.prototype.toString.apply(ival) == '[object Array]'){//是複選框,並且是數組 for(var i=0;i<ival.length;i++){ if($(this).val()==ival[i]) $(this).attr("checked", "checked"); } }else{ if($(this).val()==ival) $(this).attr("checked", "checked"); } }); }else if($oinput.attr("type")== "textarea"){//多行文字框 obj.find("[name="+name+"]").html(ival); }else{ obj.find("[name="+name+"]").val(ival); } });};</span>
注意頁面啟動ajax方法,然後這樣就可以通過ajax拿到自己想要的值,又可以將值全部賦值到form表單中了。
看了之後有木有感覺很有愛啊。
jQuery通過ajax獲得後台json資料給form表單賦值