導航:首頁 > 版本升級 > qjsondocument文件

qjsondocument文件

發布時間:2025-03-14 18:09:07

1. jquery autocomplete怎麼實現的

1、jquery.autocomplete詳解
語法:
autocomplete(urlor data, [options] )
參數:
url or data:數組或者url


[options]:可選項,選項解釋如下:
1) minChars (Number)
在觸發autoComplete前用戶至少需要輸入的字元數,Default:1,如果設為0,在輸入框內雙擊或者刪除輸入框內內容時顯示列表。

2) width (Number)
指定下拉框的寬度,Default: input元素的寬度

3) max (Number)
autoComplete下拉顯示項目的個數,Default: 10

4) delay (Number)
擊鍵後激活autoComplete的延遲時間(單位毫秒),Default: 遠程為400 本地10

5) autoFill (Boolean)
要不要在用戶選擇時自動將用戶當前滑鼠所在的值填入到input框,Default: false

6) mustMatch (Booolean)
如果設置為true,autoComplete只會允許匹配的結果出現在輸入框,所有當用戶輸入的是非法字元時將會得不到下拉框,Default:false

7) matchContains (Boolean)
決定比較時是否要在字元串內部查看匹配,如ba是否與foo bar中的ba匹配.使用緩存時比較重要.不要和autofill混用.Default: false

8) selectFirst (Boolean)
如果設置成true,在用戶鍵入tab或return鍵時autoComplete下拉列表的第一個值將被自動選擇,盡管它沒被手工選中(用鍵盤或滑鼠).當然如果用戶選中某個項目,那麼就用用戶選中的值. Default: true

9) cacheLength (Number)
緩存的長度.即對從資料庫中取到的結果集要緩存多少條記錄.設成1為不緩存.Default: 10

10) matchSubset (Boolean)
autoComplete可不可以使用對伺服器查詢的緩存,如果緩存對foo的查詢結果,那麼如果用戶輸入foo就不需要再進行檢索了,直接使用緩存.通常是打開這個選項以減輕伺服器的負擔以提高性能.只會在緩存長度大於1時有效.Default: true

11) matchCase (Boolean)
比較是否開啟大小寫敏感開關.使用緩存時比較重要.如果你理解上一個選項,這個也就不難理解,就好比foot要不要到FOO的緩存中去找.Default: false

12) multiple (Boolean)
是否允許輸入多個值即多次使用autoComplete以輸入多個值. Default:false

13) multipleSeparator (String)
如果是多選時,用來分開各個選擇的字元. Default:","

14) scroll (Boolean)
當結果集大於默認高度時是否使用卷軸顯示 Default: true

15) scrollHeight (Number)
自動完成提示的卷軸高度用像素大小表示 Default: 180

16) formatItem (Function)
為每個要顯示的項目使用高級標簽.即對結果中的每一行都會調用這個函數,返回值將用LI元素包含顯示在下拉列表中.Autocompleter會提供三個參數(row, i, max): 返回的結果數組, 當前處理的行數(即第幾個項目,是從1開始的自然數), 當前結果數組元素的個數即項目的個數.Default: none, 表示不指定自定義的處理函數,這樣下拉列表中的每一行只包含一個值.

17) formatResult (Function)
和formatItem類似,但可以將將要輸入到input文本框內的值進行格式化.同樣有三個參數,和formatItem一樣.Default: none,表示要麼是只有數據,要麼是使用formatItem提供的值.

18) formatMatch (Function)
對每一行數據使用此函數格式化需要查詢的數據格式. 返回值是給內部搜索演算法使用的. 參數值row

19) extraParams (Object)
為後台(一般是服務端的腳本)提供更多的參數.和通常的作法一樣是使用一個鍵值對對象.如果傳過去的值是{ bar:4 },將會被autocompleter解析成my_autocomplete_backend.php?q=foo&bar=4 (假設當前用戶輸入了foo). Default: {}

20) result (handler) Returns:jQuery
此事件會在用戶選中某一項後觸發,參數為:
event: 事件對象. event.type為result.
data: 選中的數據行.
formatted:formatResult函數返回的值
例如:

js">$("#singleBirdRemote").result(function(event,data,formatted){
//如選擇後給其他控制項賦值,觸發別的事件等等
});


2、jquery.autocomplete使用技巧
1) jquery.autocomplete需要的數據源可以為:本地數據和遠程數據
本地數據源為本地js數組或本地的json對象,如:

vardata=["c++","java","php","coldfusion","javascript"];
vardata=[{text:'LinkA',url:'/page1'},{text:'LinkB',url:'/page2'}];


在使用遠程地址時,它默認傳入的參數是:q(輸入值),limit(返回結果的最大值),可以使用extraParams傳入其他的參數,而且遠程數據源是需要固定格式的數據,返回結果:使用「 」分割每行數據,每行數據中使用「|」分割每個元素,如:
後台C#代碼

復制代碼代碼如下:

stringdata="c++
java
php
coldfusion
javascript";
stringdata="{text:'LinkA',url:'/page1'} {text:'LinkB',url:'/page2'}";


4、jquery.autocomplete實例
1) 本地數據源的調用方法
方法1:

代碼如下:

$("#tags").autocomplete(["c++","java","php","coldfusion","javascript"],{width:320,max:4,highlight:false,multiple:true,multipleSeparator:"",scroll:true,scrollHeight:300});


方法2:

代碼如下:

vardata=[{text:'LinkA',url:'/page1'},{text:'LinkB',url:'/page2'}];
$("...").autocomplete(data,{
formatItem:function(item){
returnitem.text;
}
}).result(function(event,item){
location.href=item.url;
});


2) 遠程數據數據源的調用方法
方法1:
前台js

代碼如下:

<scripttype="text/javascript">
$(document).ready(function(){
$("#Login").focus().autocomplete("/ajax/Account",{
formatItem:function(row,i,max){
varobj=eval("("+row+")");//轉換成js對象
returnobj.Text;
},
formatResult:function(row){
varobj=eval("("+row+")");//轉換成js對象
returnobj.Text;
}
}).result(function(event,item){
varobj=eval("("+item+")");//轉換成js對象
$("#link").attr(「href」,obj.url);
});
});
</script>


後台C#(mvc)代碼:

代碼如下:

(stringq)
{
stringstrResult="";
//...查詢數據操作...
//...格式化數據...
//格式完成的結果為
strResult="{text:'LinkA',url:'/page1'} {text:'LinkB',url:'/page2'}";
returnContent(strResult);
}


方法2:
前台js

復制代碼代碼如下:

<scripttype="text/javascript">
$(document).ready(function(){
$.getJSON("/ajax/Account",function(data){
$("#Login").focus().autocomplete(data,{
formatItem:function(item,i,max){
returnitem.Text;
},
formatResult:function(item){
returnitem.Text;
}
}).result(function(event,item){
$("#link").attr(「href」,item.url);
});
});
});
</script>


後台C#(mvc)代碼:

代碼如下:

publicContentResultAccount(stringq)
{
stringstrResult="";
//...查詢數據操作...
//...格式化數據...
//格式完成的結果為
strResult="[{"text":"LinkA","url":"/page1"},{"text":"LinkB","url":"/page2"}]";
returnContent(strResult);
}

2. 怎麼使用java操作mongodb更新整個文檔

上篇博客介紹了java操作mongoDB進行對文件的處理。現在來介紹一下對文檔的處理。和對文件的處理一樣,也是通過java驅動中提供的幾個類相互作用完成的。這幾個類分別是:
DBCollection類:指定資料庫中指定集合的實例,提供了增刪改查等一系列操作。在關系型資料庫中,對數據的增刪改查操作是建立在表的基礎上的,在mongodb中是建立在集合的基礎上進行的。
DBObject介面:DBObject是鍵值的映射,因此,可以將DBObject的實現類作為查詢的返回結果,也可以作為查詢條件
DBCursor:游標,返回結果的集合。
下面是部分實例:

[java] view plain
Mongo mongo = new Mongo();
DB db = mongo.getDB("myMongoDB");
DBCollection course = db.getCollection("course");//對myMongoDB資料庫中course集合進行操作

//添加操作
//下面分別是創建文檔的幾種方式:1. .append() 2. .put() 3. 通過map 4. 將json轉換成DBObject對象
DBObject english = new BasicDBObject().append("name","english").append("score", 5).append("id",1);
course.insert(english);

DBObject math = new BasicDBObject();
math.put("id", 2);
math.put("name", "math");
math.put("score", 10);
course.insert(math);

Map<String,Object> map = new HashMap<String,Object>();
map.put("name","physics" );
map.put("score", 10);
map.put("id", 3);
DBObject physics= new BasicDBObject(map);
course.insert(physics);

String json ="{'name':'chemistry','score':10,'id':4}";
DBObject chemistry =(DBObject)JSON.parse(json);
course.insert(chemistry);

List<DBObject> courseList = new ArrayList<DBObject>();
DBObject chinese = new BasicDBObject().append("name","chinese").append("score", 10).append("id", 5);
DBObject history = new BasicDBObject().append("name", "history").append("score", 10).append("id", 6);
courseList.add(chinese);
courseList.add(history);
course.insert(courseList);

//添加內嵌文檔
String json2 =" {'name':'english','score':10,'teacher':[{'name':'柳松','id':'1'},{'name':'柳鬆鬆','id':2}]}";
DBObject english2= (DBObject)JSON.parse(json);
course.insert(english2);

List<DBObject> list = new ArrayList<DBObject>();
list.add(new BasicDBObject("name","柳松").append("id",1));
list.add(new BasicDBObject("name","柳鬆鬆").append("id",2));
DBObject english3= new BasicDBObject().append("name","english").append("score",10).append("teacher",list);

//查詢
//查詢所有、查詢一個文檔、條件查詢
DBCursor cur = course.find();
while(cur.hasNext()){
DBObject document = cur.next();
System.out.println(document.get("name"));
}

DBObject document = course.findOne();
String name=(String)document.get("name");
System.out.println(name);

//查詢學分=5的
DBObject query1 = new BasicDBObject("score",5);
DBObject query2 = new BasicDBObject("score",new BasicDBObject("$gte",5));
DBCursor cur2 = course.find(query2);
//條件表達式:$ge(>) $get(>=) $lt(<) $lte(<=) $ne(<>) $in $nin $all $exists $or $nor $where $type等等

//查找並修改
DBObject newDocument = course.findAndModify(new BasicDBObject("score",5), new BasicDBObject("score",15));

//更新操作
//q:更新條件 o:更新後的對象
course.update(new BasicDBObject("score",10), new BasicDBObject("test",15));
course.update(new BasicDBObject("score",15), new BasicDBObject("$set",new BasicDBObject("isRequired",true)));
//兩個的區別是,第一個更新是將{"test":15}這個文檔替換原來的文檔,
//第二個更新添加了條件表達式$set,是在原來文檔的基礎上添加"isRequired"這個鍵
//條件表達式:$set $unset $push $inc $push $push $addToSet $pull $pullAll $pop等等

//當_id相同時,執行save方法相當於更新操作
course.save(new BasicDBObject("name","math").append("_id", 1));
course.save(new BasicDBObject("name","數學").append("_id", 1));

//刪除符合條件的文檔
course.remove(new BasicDBObject("score",15));

//刪除集合及所有文檔
course.drop();<span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;">
</span></span>

上面只是介紹了一些簡單的操作,具體復雜的查詢更新可以根據需求再去查找文檔資料。其實,不管操作簡單還是復雜,其核心都是對DBObject和DBCollection的操作,主要掌握DBObject如何構造鍵值對,以及一些條件表達式。

3. Qt--解析Json

在Qt中解析JSON數據,主要依賴於QJsonDocument、QJsonArray、QJsonObject等類。以下是解析JSON數據的步驟和相關類的使用方法:

  1. 使用QJsonDocument類

    • 功能:QJsonDocument類提供了JSON文檔的讀寫方法,支持UTF8編碼文本和Qt自身的二進制格式。
    • 常用方法
      • fromJson:將JSON字元串轉換為QJsonDocument對象。
      • toJSON:將QJsonDocument對象轉換為JSON字元串。
      • isNull:驗證文檔是否有效。
      • isArray和isObject:查詢文檔類型,判斷是JSON數組還是JSON對象。
      • array和object:提取JSON數組或JSON對象。
  2. 使用QJsonArray類

    • 功能:QJsonArray類封裝了JSON數組,提供了數組操作的方法。
    • 與QVariantList的轉換:QJsonArray可以與QVariantList相互轉換。
    • 常用方法
      • insert:在指定位置插入元素。
      • removeAt:刪除指定位置的元素。
      • 其他數組操作方法,如遍歷、訪問元素等。
  3. 使用QJsonObject類

    • 功能:QJsonObject類封裝了JSON對象,提供了鍵值對操作的方法。
    • 與QVariantMap的轉換:QJsonObject可以與QVariantMap相互轉換。
    • 常用方法
      • insert:插入鍵值對。
      • remove:刪除指定鍵的鍵值對。
      • value:根據鍵獲取對應的值。
      • keys:獲取所有鍵的列表。
  4. 解析流程

    • 步驟
      1. 將JSON字元串轉換為QJsonDocument對象。
      2. 使用isArray和isObject判斷文檔類型。
      3. 根據文檔類型,提取QJsonArray或QJsonObject。
      4. 遍歷或訪問QJsonArray或QJsonObject中的數據,獲取QJsonValue類型的數據。
      5. 根據需要,將QJsonValue轉換為基本類型或進一步解析嵌套的JSON結構。
  5. 錯誤處理

    • 使用QJsonParseError類捕獲和報告JSON解析過程中的錯誤信息。

通過上述步驟和類,可以在Qt中有效地解析和處理JSON數據。

閱讀全文

與qjsondocument文件相關的資料

熱點內容
psp怎麼傳文件 瀏覽:667
密級文件存檔多少年 瀏覽:752
蘋果6怎樣設置軟體密碼是多少時間嗎 瀏覽:938
哪裡招數控編程學徒 瀏覽:889
微信dat文件是什麼文 瀏覽:425
手寫代碼 瀏覽:791
蘋果改鈴聲軟體叫什麼 瀏覽:735
烏班圖刪除文件夾命令Linux 瀏覽:608
linuxquestions 瀏覽:450
小區攝像頭錄像數據在哪裡 瀏覽:566
網上編程培訓機構怎麼樣 瀏覽:675
qq群文件怎麼快速下載 瀏覽:858
比爾蓋茨和網路什麼關系 瀏覽:76
我的天天影迷app為什麼不能登錄 瀏覽:259
如何把別人填的數據快速匯總 瀏覽:406
編譯原理java版 瀏覽:449
PopOn安卓版 瀏覽:838
U最近很火的網路用詞有哪些 瀏覽:309
可行性研究階段使用的圖形工具是 瀏覽:832
手機內存卡文件損壞 瀏覽:512

友情鏈接