轉載:http://blog.csdn.net/aasmfox/article/details/7016236
1.手動點擊網頁按鈕C++后台響應
2.設置自動觸發事件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Untitled Page</title> <style type="text/css"> #button1 { width: 306px; } #button2 { width: 306px; } </style> <script language="javascript" type="text/javascript"> function Test() { alert("你調用了Test"); } function GlobalObject() { this.Test=function() { alert("你調用了GlobalObject.Test"); } } function OnTest() { alert("自動觸發事件"); } var globalObject = new GlobalObject(); // 兩秒后模擬點擊 setTimeout(function () { // IE if (document.all) { document.getElementById("clickMe").click();//找到對應元素進行點擊 } // 其它瀏覽器 else { var e = document.createEvent("MouseEvents"); e.initEvent("click", true, true); document.getElementById("clickMe").dispatchEvent(e); } }, 2000); </script> </head> <body> 測試頁面<br /> <br /> <a href="#" id="clickMe" onclick="OnTest();">link</a> <input id="button1" type="button" value="點擊演示在C++中處理按鈕的onclick事件" /> <br /> <br /> <input id="button2" type="button" value="點擊調用客戶端的CppCall函數" onclick="return window.external.CppCall()" /> <br /> <br /> <p id="p1">Hello World!</p> <br /> <div id="size_info"></div> </body> </html>
比較詳細的交互教程:
轉載:http://blog.csdn.net/charlessimonyi/article/details/18447471
C++ 解析Json——jsoncpp
轉載:http://www.cppblog.com/wanghaiguang/archive/2013/12/26/205020.html
轉載:http://blog.csdn.net/crazyer2010/article/details/8962449
轉載:http://blog.sina.com.cn/s/blog_86fe5b4401019xbt.html
轉載:http://93635083.blog.sohu.com/269335462.html
轉載:http://blog.csdn.net/chenscmail/article/details/10109739
轉載:http://www.cnblogs.com/kex1n/archive/2011/12/02/2272328.html
解析JSon串:轉載:https://www.cppfans.org/1445.html
轉載:https://www.cnblogs.com/chenyangchun/p/6953132.html(Json::Value isMember成員使用)
VC下使用JSONCPP(json)
Jsoncpp是個跨平台的開源庫,下載地址Jsoncpp開源庫
3.使用jsoncpp幾個例子:
1 void Myparse1() 2 { 3 const char* str = "{\"result\":{\"id\":\"cc1521c7e1084d90bb26c6a0ee965c8c\",\"mLocktime\":0,\"mTouchid\":\"0\",\"modifyTime\":1480753775000},\"status\":\"ok\"}"; 4 Json::Reader reader; 5 Json::Value root; 6 if (reader.parse(str, root)) // reader將Json字符串解析到root,root將包含Json里所有子元素 7 { 8 std::string str = root["result"]["id"].asString();//得到 9 std::string str1 = root["status"].asString();//得到ok 10 11 } 12 } 13 14 void Myparse2() 15 { 16 const char* str = "[{\"status\":\"ok\"},{\"MLocktime\":0,\"MTouchid\":\"0\",\"id\":\"cc1521c7e1084d90bb26c6a0ee965c8c\",\"modifyTime\":\"2016-12-03 16:29:35\"}]"; 17 Json::Reader reader; 18 Json::Value root; 19 if (reader.parse(str, root)) // reader將Json字符串解析到root,root將包含Json里所有子元素 20 { 21 int size = root.size(); 22 std::string str = root[size-2]["status"].asString(); 23 std::string str1 = root[size-1]["id"].asString(); 24 25 } 26 } 27 28 void Myparse3() 29 { 30 const char* str = "[{\"age\":24},{\"age\":1},{\"age\":22},{\"age\":24},{\"age\":16}]"; 31 Json::Reader reader; 32 Json::Value root; 33 if (reader.parse(str, root)) // reader將Json字符串解析到root,root將包含Json里所有子元素 34 { 35 int size = root.size(); 36 int age = root[size-5]["age"].asUInt();//得到24 37 38 } 39 } 40 41 void Myparse4() 42 { 43 const char* str = "{\"friendArray\":[{\"age\":24},{\"age\":1},{\"age\":22},{\"age\":24},{\"age\":16}]}"; 44 Json::Reader reader; 45 Json::Value root; 46 if (reader.parse(str, root)) // reader將Json字符串解析到root,root將包含Json里所有子元素 47 { 48 int size = root["friendArray"].size(); 49 int age = root["friendArray"][size-1]["age"].asInt(); 50 51 } 52 }
在項目開發中,后台C++使用jsoncpp解析json串,可以采用上面四種方法進行解析,上面的寫法是約定好,一定存在相應的key然后拿到value值,因此存在一定的風險,如果傳過來的json串某一key丟失,則會導致程序崩潰,為了保證程序的穩定性,在取key對應的value值時,做一個保護。
string strJson = "{\"msg\":\"正常\", \"code\":\"A0000\", \"data1\":1,\"data2\":3.1415927, \"data3\":-4}"; Json::Reader reader; Json::Value root; if (reader.parse(strjson, root)) // reader將Json字符串解析到root,root將包含Json里所有子元素 { int size = root.size(); std::string str = root["msg"].asString();//得到"正常",但msg不存在這樣取程序會崩潰 //root對象中有這個key返回true 否則返回false std::string str2 = root.isMember("msg")?root["msg"].asString():""; std::cout <<"uid:"<< str2 << std::endl;//msg存在就打印"正常",若msg不存在則打印空 }