ajax動態獲取資料庫中的資料
今天看到有人在問答上問怎樣去動態取值附在option上,本來想解決的,但我發現。。。。沒有,我本來也笨,記不住,所以還是寫一下,讓大家可以看一下:
首先我這用的框架是SSM,程式碼就開始了:
這是寫在前臺的方法裡一個點選事件進入方法裡我就不寫那麼麻煩了直接ajax部分程式碼:
$.ajax({ //這就開始進入ajax了
type:"get", //這個我也忘了,好像是類似格式吧,基本是死的不需要改動
dataType:"json", //這個是將字串轉換成json格式
cache:false, //不曉得
data:"staffName="+staffName+"&staffGender="+staffGender, //這兩個就是我要向後臺傳的值,之前已經拿到了,staffName和Gender就是物件的屬性名,也可以隨意起
url:"<%=request.getContextPath()%>/staffGet", //這個是路徑,staffGet是我在檢視層宣告的名字我想你們應該知道mapping吧
complete:function(msg){ //如果你們僅僅只是向後臺傳值就不需要下面的程式碼了,如果有返回值,比如name查詢資料庫所有相同name並在前臺接收就需要下面的程式碼
$("#read").html(""); //在這裡是因為我點選一次就自動把查到的資訊新增,會重複,所以才有的在賦值之前把原本的資訊刪除,請參考這串程式碼倒數第二行你就懂了
$("[id=read]").remove(); //這是把原本的ID刪除只有這樣才能清空原本的資訊,ID存在會顯示一個空的td,這一行和上一行與該文章沒有關係,只是專案需要,可以沒有
var data = eval("(" + msg.responseText + ")"); //這就是將後臺傳過來的資料並交給data這個物件
$.each(data["list"],function(i,item){ //遍歷這個資料,我在後臺傳送資料給的KEY是list,所以才有data["list"],變數名隨你傳送的map的KEY變化而變化詳情請看後臺程式碼
var Name="<tr id='"+item.staffId+"tr'><td id='"+item.staffId+"Name'>"+item.staffName+"</td>"; //這裡我用一個字串向tr和td賦值,ID最後一行改了是為了綠色註解部分
$("#staffget").append(Name); //然後將字串插入表格中,具體插入方式可以參考ajax的API,有appendTo等多種方式,按情況參考
$("#"+item.staffId+"tr").attr("id","read"); //在這裡將所有tr的ID改成read,為了我點選多次從後臺取值不會出現多次重複,點一次刪除所有Id為read的
前臺程式碼缺括號,有)},具體缺哪個自行查詢
現在開始後臺程式碼,因為懶得找就隨意找了一個
@RequestMapping("/JurisdictionGet") //這裡就是我在之前ajax裡url的路徑,詳情請看ajax--url 我有解釋
@ResponseBody //這是因為使用了ajax必須要宣告的註解
public Object JurisdictionGet(Jurisdiction jurisdiction) throws Exception //因為使用了ajax所以方法必須使用Object型別的方法,引數列表就是前臺傳送回來的 資料,如果想在後臺用物件接收,前臺傳值時,定義的引數名必須是你這個物件的屬性名,才可以像我這樣接收,如果不同就用String接收,但引數名必須和前臺定義的一樣
{
Map<String, Object> map = new HashMap<String, Object>(); //這個map是在前臺需要有返回值時存在的,獲取資料庫的值通過它傳給前臺用key取值
map.put("list", JurisdictionServices.JurisdictionGet(jurisdiction)); //定義的KEY為list,value裡的資料是我呼叫的Services層,主要邏輯都寫在哪裡,就不發了,和以前大家的用法都差不多,因為是查多個,所以返回的是LIST資料,懂吧?不懂 可以在評論問我,我回復大家
return map; //將這個map傳送出去,再往後的參考前臺就行,解釋的很清楚了,不懂的可以問我,我只要會,就一定解 答大家
}