Microsemi AN1256 Web Programmers Isicelo
Intshayelelo
I-JSON (i-JavaScript Object Notation) ngumgangatho ovulekileyo file ifomathi esebenzisa okubhaliweyo okufundekayo komntu kutshintshiselwano lwedatha. Yifomathi yedatha eqhelekileyo esetyenziselwa i-asynchronous browser / unxibelelwano lweseva.
Yentsha web uyilo lwephepha, ifomathi ye-JSON inokuba yindawo yoqobo lwe-AJAX isimbo. Thelekisa kwi-AJAX, usebenzisa i-JSON yenza i Web ukuphunyezwa kulula kwaye kulula. Umphuhlisi kufuneka agxininise kuphela web uyilo lwephepha kunye ne Web uphumezo lomphathi lunokushiywa ukusukela ukuba indlela yofikelelo ye-JSON sele ixhasiwe kuyo nganye WebIimodyuli zesoftware ye-StaX.
Olu xwebhu luxela isikhokelo sabadwelisi benkqubo yenjineli yesoftware ekufuneka iphuhlise Web iphepha nge-JSON. Iinkqubo zeenkcukacha kunye nomzampOku kukwabandakanyiwe kula macandelo alandelayo.
JSON ukungena kwedatha
Ngaphezuluview
Nantsi indlela yokufikelela kwidatha ye-JSON apho uqhagamshelo lweHTTP luqaliswe kumxhasi(umkhangeli). Itheyibhile yeHTML yenziwe ngokutshintshayo ngokwedatha efunyenweyo ye-JOSN ukusuka kumncedisi (DUT) icala.
Umzobo 1. Ukuhamba kofikelelo phakathi komxhasi kunye nomncedisi
Isicelo/Impendulo yedatha ye-JSON
Ipakethe yesicelo se-JSON isekelwe kwindlela yokuposa yesicelo se-HTTP kwaye umxholo kufuneka ulandele ifomethi ye-MSCC JSON.
- Cela isivakalisi seJSON:{"indlela":" ","iparams":[ ], "id:"jsonrpc"}
- Impendulo esuka ku JSON: {"impazamo": ,"isiphumo": , "id:"jsonrpc"}
Ezi zifinyezo zilandelayo zibonisa umxholo we-JSON phakathi kwesikhangeli kunye ne-DUT.
Umzobo 2. Umfanekiso wesicelo seHTTP kumxhasi
Umzobo 3. Umfanekiso wempendulo yeHTTP evela kwiseva
Ubalulo lwe-MSCC JSON
Ukufumana ulwazi olupheleleyo lwe-JSON kuquka indlela, ipharamitha, inkcazo kunye nokunye. Chwetheza “http:// /json_spec" kwibar yedilesi yesikhangeli sakho. Kukho enye indlela yokufikelela nge-JSON indlela yegama elithi "jsonRpc.status.introspection.specific.inventory.get", isetyenziselwa indlela ethile.
Umzobo 4. Umfanekiso wenkcazelo ye-JSON web iphepha
Web isakhelo
I Web isakhelo kwi WebIsoftware yeStaX isekwe kumthombo ovulekileyo weMooTools. Yingqokelela yezixhobo zeJavaScript ezinelayisenisi yeMIT. (http://mootools.net/license.txt) Ibar yemenyu kwaye uninzi lwe web amaphepha asekelwe kwisakhelo. Zombini i-AJAX kunye ne-JSON algorithm sele idityanisiwe kwizinto zayo eziluncedo.
Ngaphandle koko, WebIsoftware ye-StaX ibonelela ngezinye izinto eziluncedo kwi-JSON web uyilo lwephepha.
- json.js - Sebenzisa ukuhambisa/ukufumana idata eguquguqukayo ngeJSON syntax.
- dynforms.js - Sebenzisa ukwenza itafile yeHTML ngokuguquguqukayo.
- Qinisekisa.js - Sebenzisa ukuqinisekiswa kwefom ye-HTML.
Amathala eencwadi eJavaScript agcweleyo abekwe phantsi kolawulo lomthi wemvelaphi: webstax2\ vtss_appl\web\html\lib.
Isikhokelo se-JSON Web uyilo lwephepha
Eli candelo likhokela indlela yokuyila a web iphepha esekwe kwi-MSCC JavaScript amathala. Sisebenzisa iMirror global iqwalaselwe web iphepha njenge example apha. Unxibelelwano lwe-asynchronous lusekelwe kwindlela yokufikelela kwi-HTTP JSON kwaye zonke iiparamitha eziqwalaselweyo zehlabathi zidweliswe kwitafile enye ye-HTML eguquguqukayo.
I web ubeko lwephepha zidweliswe ngezantsi kwaye ikhowudi yemvelaphi epheleleyo ibekwe phantsi kolawulo lomthi wemvelaphi: webstax2\vtss_appl\mirror\html\mirror_ctrl.htm. Ukufumana ngaphezulu eqhelekileyo web iphepha reference, bona icandelo lesihlomelo.
Itheyibhile yoqwalaselo yesipili&RMMirror
Umzobo 5. Example yetafile eqwalaselweyo yehlabathi
Hlela Web iphepha
Okubhalwe ngasentla kwe-HTML
Bandakanya iilayibrari ze-JS ezifunekayo kwi-HTML tag.
Qalisa isibonelelo setafile esiguqukayo
- Xa uxwebhu lweHTML lulungile, fowunela iDynamicTable () ukuqala uvimba wetafile oguqukayo.
- I-DynamicTable () isetyenziselwa ukwenza itheyibhile eguqukayo emva kokufumana idatha ye-JSON.
- Iyakuthi emva koko ibize i-applicationUpdate ukuze iqalise ukuhamba komyalelo we-JSON.
- window.addEvent('domready', function() {
- // Yenza ifom enomzimba wetafile ukufumana / ukuhambisa idatha ye-JSON
- myDynamicTable = iDynamicTable entsha (“myTableContent”, “config”,”plusRowCtrlBar”);
4 - isiceloUhlaziyo();
- });
Isicelo/Impendulo yedatha ye-JSON
- Xa uxwebhu lweHTML lulungile, sebenzisa isiceloJsonDoc() ukuthumela isicelo se-JSON "mirror.config.session.get" ukufumana ulwazi malunga neeseshoni ezimiselweyo.
- Emva kokuba idatha ye-JSON ye "mirror.capabilities.get" ifunyenwe, umsebenzi wokufowuna u-Update () uya kuqhutyelwa phambili. Umsebenzi wokucela uHlaziyo uya kuthi emva koko ubize "mirror.config.session.get" ukufumana uqwalaselo lwangoku. Xa uqwalaselo lwangoku lufunyenwe, umsebenzi processUpdate ubizwa ukwakha itafile eza kuboniswa.
- isicelo somsebenziHlaziya ()
- {
- // Buyisela umxholo wetafile
- myDynamicTable.restore();
5 - // Le theyibhile ezimbini zedatha ye-JSON.
- requestJsonDoc(“mirror.config.session.get”, null, processUpdate, “config”);
- }
Yenza idatha ye-JSON efunyenweyo
- Umsebenzi processUpdate () isetyenziselwa ukuyila itafile eguqukayo emva kokufumana i data ye JSON.
- I addRows () isetyenziselwa ukudibanisa imiqolo yetafile. myDynamicTable.update() uyilo lwe
Itafile ye-HTML ngokwedatha kwimigca yetafile.
- Umsebenzi woHlaziyo (recv_json, igama)
- {
- // Ungayihoyi inkqubo ukuba akukho datha ifunyenweyo
- ukuba (!recv_json) {
- isilumkiso("Fumana idatha eguqukayo ayiphumelelanga.");
- buya
- }
- // Gcina idatha ye-JSON efunyenweyo
- myDynamicTable.saveRecvJson(“config”, recv_json);
- // Yongeza imiqolo yetafile
- var table_rows = addRows(recv_json);
- myDynamicTable.addRows(imigca_yetafile);
- // Hlaziya le theyibhile eguqukayo
- myDynamicTable.update();
- // Hlaziya isibali-xesha
- var autorefresh = document.getElementById(“autorefresh”);
- ukuba (fresh && autorefresh.checked) {
- ukuba (i-timerID) {
- clearTimeout(timerID);
- }
- timerID = setTimeout('requestUpdate()', settingsRefreshInterval());
- }
- }
Yongeza imiqolo yetafile
- Kwi-addRows () umsebenzi, sisebenzisa ifomati ye-JSON ukuzalisa ipharamitha nganye eqwalaselweyo yehlabathi kumqolo wetafile.
- Onke amasimi e-HTML adweliswe kuluhlu lwe-JSON (“itafile_imiqolo”) kunye nolungelelwaniso lomhlaba wetafile ungezantsi.
Isintaksi:
Itafile_imigca:[ , ,… ] : { , ,… }
: {“uhlobo”: , "iiparams":[ , ,…, ]}
- Kule meko, umqolo ngamnye unemihlaba emihlanu: "I-ID yeseshoni", "Imowudi", "Uhlobo", "i-ID yeVLAN" kunye ne "Reflector Port" Kuba ex.ample,
I-ID yeseshoni (Indawo yegama: int32_t) | 1 (Id yeseshoni yesipili) |
Imowudi (Indawo yegama: vtss_bool_t) | yinyani (Ithetha ukuba iseshoni yesipili ivuliwe) |
Uhlobo (Indawo yegama: ubalo
{isipili, rMirrorSource, rMirrorDestination} |
Umthombo we-RMMirror (lo ngumthombo weseshoni yesipili esikude |
VLAN ID (Indawo yegama: uint16_t) | 200 (i-vlan isetyenziselwa ukwenza isipili) |
I-Reflector Port (Indawo yegama: vtss_ifindex_t) | Gi 1/1 (Izibuko apho i-traffic yesipili ithunyelwa khona |
- I-myDynamicTable.addRows() iyakuguqula idatha ye-JSON kwifomati ye-HTML kwaye ikhuphe itafile ye-HTML.
- umsebenzi wokongezaRow(isitshixo, ival)
- {
- var none_map_val = 0xFFFFFFFF, none_map_text = “Akukho”, none_interface_text = “NONONE”;
- var tunnel_mode_suffix = val.TunnelMode == "useglobal" ? ” (” + oTTunnelMode[oVTunnelMode.indexOf(global_conf.tunnelMode)] + “)” : “”;
- umqolo we-var = {imimandla:[
- {type:”link”, params:[“cr”, “mirror.htm?session_id=” + isitshixo, isitshixo]},
- {type:"text", params:[oTMode[oVMode.indexOf(val.Mode)], "c"]},
- {type:"text", params:[oTType[oVType.indexOf(val.Type)], "c"]},
- {uhlobo:"okubhaliweyo", iiparams:[val.Type == "isipili" ? "-":
val.RMirrorVlan, “c”]}, - {type:"text", params:[val.Type == "rMirrorSource" ?
val.ReflectorPort : “-” , “c”]} - ]};
- umqolo wokubuya;
- }
- umsebenzi wokongeza iRows(recv_json)
- {
- var umqolo, empty_colspan = 7;
- var table_rows = iArray entsha ();
- // Yongeza isihloko setafile
- addHeader(itafile_imiqolo);
- // Yongeza umqolo omnye
- Object.each(recv_json, umsebenzi(irekhodi) {
- table_rows.push(addRow(record.key, record.val));
- });
- buyisela itafile_imiqolo;
- }
Web iphepha loncedo
Ukwenzela i web Uyilo lwephepha loncedo, inkcazo yoncedo inokubhekisa kwinkcazo ye-JSON, ukuba umbhalo wenkcazo unokuhambelana nemveliso ye-JSON kwaye unceda ukunciphisa iinkcazo ezingafunekiyo. Eksample apha ithathwe kuqwalaselo lodluliselo lwe-dhcp6.
Ikhonkco elikhulu kumthombo file
Yabela uncedo file indawo kumthombo wayo file HTML tag. Igama eliguquguqukayo elisisigxina "help_page" lisetyenziselwa i web iphepha loncedo.
- // Umlingo wephepha loncedo
- var help_page = “/help/help_xxx.htm”;
Hlaziya inkcazo yendawo ye-HTML esuka kwinkcazo ye-JSON
- Sebenzisa okanye HTML tag ukubhengeza inkcazelo yetafile yeHTML kwaye inikwe isazisi esisodwa se tag.
- Xa uxwebhu lwe-HTML lulungile, fowunela i-loadXMLDoc () ukufumana yonke inkcazo ye-JSON okanye ufumane inkcazo yendlela ethile ngegama lendlela ye-JSON "jsonRpc.status.introspection.specific.inventory.get".
- InkquboTableDesc () isetyenziselwa ukuhlaziya inkcazo yetafile kunye neprosesaUpdate() isetyenziselwa ukuhlaziya inkcazo yepharamitha yetafile.
- Kwi processUpdate(), fowunela i-updateTableParamsDesc() ukuhlaziya izinto ze-JSON ezidityaniswa namagama athile.
- Hlaziya i okanye tag i-HTML yangaphakathi ngokwenkcazo yento.
- /* Hlaziya imimandla yenkcazo yeHTML */
- umsebenzi processTableDesc(req) {
- ukuba (!req.responseText) {
- buya
- }
- var json_spec = JSON.decode(req.responseText);
- // Hlaziya inkcazo yetafile
- $(“TableDesc”).innerHTML = getJsonSpecElement(json_spec, “groups”, “dhcp6_relay.config.vlan”).description;
- }
- /* Hlaziya inkcazo yeparamitha yetafile yeHTML */
- Umsebenzi wenkquboUhlaziyo(recv_json) {
- // Hlaziya inkcazo yepharamitha yetafile
- var param_names = [
- {
- "alias": "Interface",
- “uhlobo”: “vtss_ifindex_t”,
- "igama": "vlanInterface",
- "isimamva": "."
- },
- {
- "alias": "Relay Interface",
- “uhlobo”: “vtss_ifindex_t”,
- "igama": "relayVlanInterface",
- “isimamva”: “. I-id yojongano olusetyenziselwa ukuhanjiswa. "
- },
- {
- "alias": "iNdawo yokuRelay",
- “uhlobo”: “mesa_ipv6_t”,
- "igama": "relay_destination",
- “isimamva”: “. Idilesi ye-IPv6 yeseva ye-DHCPv6 izicelo ziya kuthunyelwa kuyo. Ixabiso elimiselweyo 'ff05::1:3' mans 'nayiphi na iseva yeDHCP'."
- }
- ];
- updateTableParamsDesc(“TableParamsDesc”, recv_json, “dhcp6_relay.config.vlan.get”, param_names);
- }
- /* Fumana iinkcukacha zeJSON */
- window.addEvent('domready', umsebenzi () {
- loadXMLDoc("/json_spec", processTableDesc);
- requestJsonDoc(“jsonRpc.status.introspection.specific.inventory.get”, “dhcp6_relay.config.vlan”, processUpdate);
- });
Ikhonkco elikhulu kwibha yemenyu
- Ikhowudi yemvelaphi yeHTML yebar yemenyu yenziwe ukusuka file webstax2\vtss_appl\web\ menu_default.cxx.
- Hlela izinto kule file ukwenzela i Web ikhasi hyper-link.
- #ukuba kuchaziwe(VTSS_SW_OPTION_DHCP6_RELAY)
- INTO(” Relay,dhcp6_relay.htm”);
- #endif //VTSS_SW_OPTION_DHCP6_RELAY
PHAWULA
Qaphela ukuba inani lesithuba somsebenzi kwi-ITEM(“”), esetyenziswa ukugqiba ngenqanaba leqela kwibar yemenyu. Kule meko, zonke web amaphepha aphantsi kweqela elithi “DHCPv6”.
Umzobo 6. Eksample yetafile eqwalaselweyo yehlabathi
Isihlomelo
Isiqhelo web amaphepha
Kukho ezininzi eziqhelekileyo web amaphepha anokusetyenziswa kuyilo lwereferensi. Omnye umzekelo owongezelelweyoampLe izakubonisa apha luqwalaselo lweseshoni yesipili esinye esifunyenwe kwi vtss_appl\mirror\html\mirror.htm.
I web iphepha libonelela ngoqwalaselo oluneenkcukacha lweseshoni yesipili esinye. Zonke iiparameters ezicwangcisiweyo zidweliswe.
- Cofa iqhosha elithi "Gcina" ukusebenzisa ubumbeko lwangoku.
- Cofa iqhosha elithi "Seta kwakhona" ukuseta kwakhona ubumbeko lwangoku.
- Cofa "Rhoxisa" ukuze ubuyele ngaphayaview yeeseshoni zesipili
Uqwalaselo lwesipili&RMirror
Iisetingi zehlabathi
Umthombo weVLAN(s) Uqwalaselo
Uqwalaselo lweZibuko
Umzobo 7. Example yoqwalaselo oluneenkcukacha lweseshoni yesipili
Amaqhosha “Gcina”, “Seta kwakhona” kunye “nokurhoxisa” ongezwa yikhowudi ye-html:
JSON Umyalelo wokuhamba
Eli phepha lifuna ukuqukuqela komyalelo wamanyathelo amabini:
- Okokuqala kufuneka ufumane izakhono zesixhobo kunye nendlela "mirror.capabilities.get". Izakhono azitshintshi kwaye kufuneka zifundwe kube kanye kuphela.
- Emva koko kufuneka ufumane ukucwangciswa kwangoku kwesixhobo usebenzisa iindlela "mirror.config.session.get", "port.status.get" kwaye kwimeko yokubeka "topo.config.stacking.get".
Umnxeba we "mirror.capabilities.get" uqalwa ngumcimbi we "domready" kwaye isiphumo siqwalaselwe ukuba siphathwe ngumsebenzi requestUpdate.
Uhlaziyo lwesicelo luya kuqalisa umnxeba othi "mirror.config.session.get",
"port.status.get" kwaye kwimeko yokupakisha "topo.config.stacking.get" kwaye iziphumo zezi fowuni ziqwalaselwe ukuba ziphathwe yi-function preparationUpdate.
Umsebenzi wokulungiselelaUhlaziyo uya kuqokelela zonke iziphumo, kwaye kuphela xa zonke zifunyenwe apho iyakuthi ibize inkqubo yohlaziyo oluyakwakha iitafile eziza kuboniswa web.
Iimbekiselo
- Wikipedia JavaScript https://en.wikipedia.org/wiki/JavaScript
- JSON https://www.json.org/
- MoonTools https://mootools.net/
Amaxwebhu / Izibonelelo
![]() |
Microsemi AN1256 Web Programmers Isicelo [pdf] Isikhokelo somsebenzisi AN1256, AN1256 Web Isicelo seNkqubo, Web Inkqubo yokuSebenza, iSicelo |