Microsemi-LGOO

Microsemi AN1256 Web Programmers Isicelo

Microsemi-AN1256-Web-Programmers-Application-PRO

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.Microsemi-AN1256-Web-Abacwangcisi beNkqubo-iSicelo-MFANEKISO 1

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.Microsemi-AN1256-Web-Abacwangcisi beNkqubo-iSicelo-MFANEKISO 2

Umzobo 2. Umfanekiso wesicelo seHTTP kumxhasiMicrosemi-AN1256-Web-Abacwangcisi beNkqubo-iSicelo-MFANEKISO 3

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.Microsemi-AN1256-Web-Abacwangcisi beNkqubo-iSicelo-MFANEKISO 4

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&RMMirrorMicrosemi-AN1256-Web-Abacwangcisi beNkqubo-iSicelo-MFANEKISO 5

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.
  1. window.addEvent('domready', function() {
  2. // Yenza ifom enomzimba wetafile ukufumana / ukuhambisa idatha ye-JSON
  3. myDynamicTable = iDynamicTable entsha (“myTableContent”, “config”,”plusRowCtrlBar”);
    4
  4. isiceloUhlaziyo();
  5. });

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.
  1. isicelo somsebenziHlaziya ()
  2. {
  3. // Buyisela umxholo wetafile
  4. myDynamicTable.restore();
    5
  5. // Le theyibhile ezimbini zedatha ye-JSON.
  6. requestJsonDoc(“mirror.config.session.get”, null, processUpdate, “config”);
  7. }

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.
  1. Umsebenzi woHlaziyo (recv_json, igama)
  2. {
  3. // Ungayihoyi inkqubo ukuba akukho datha ifunyenweyo
  4. ukuba (!recv_json) {
  5. isilumkiso("Fumana idatha eguqukayo ayiphumelelanga.");
  6. buya
  7. }
  8. // Gcina idatha ye-JSON efunyenweyo
  9. myDynamicTable.saveRecvJson(“config”, recv_json);
  10. // Yongeza imiqolo yetafile
  11. var table_rows = addRows(recv_json);
  12. myDynamicTable.addRows(imigca_yetafile);
  13. // Hlaziya le theyibhile eguqukayo
  14. myDynamicTable.update();
  15. // Hlaziya isibali-xesha
  16. var autorefresh = document.getElementById(“autorefresh”);
  17. ukuba (fresh && autorefresh.checked) {
  18. ukuba (i-timerID) {
  19. clearTimeout(timerID);
  20. }
  21. timerID = setTimeout('requestUpdate()', settingsRefreshInterval());
  22. }
  23. }

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.
  1. umsebenzi wokongezaRow(isitshixo, ival)
  2. {
  3. var none_map_val = 0xFFFFFFFF, none_map_text = “Akukho”, none_interface_text = “NONONE”;
  4. var tunnel_mode_suffix = val.TunnelMode == "useglobal" ? ” (” + oTTunnelMode[oVTunnelMode.indexOf(global_conf.tunnelMode)] + “)” : “”;
  5. umqolo we-var = {imimandla:[
  6. {type:”link”, params:[“cr”, “mirror.htm?session_id=” + isitshixo, isitshixo]},
  7. {type:"text", params:[oTMode[oVMode.indexOf(val.Mode)], "c"]},
  8. {type:"text", params:[oTType[oVType.indexOf(val.Type)], "c"]},
  9. {uhlobo:"okubhaliweyo", iiparams:[val.Type == "isipili" ? "-":
    val.RMirrorVlan, “c”]},
  10. {type:"text", params:[val.Type == "rMirrorSource" ?
    val.ReflectorPort : “-” , “c”]}
  11. ]};
  12. umqolo wokubuya;
  13. }
  14. umsebenzi wokongeza iRows(recv_json)
  15. {
  16. var umqolo, empty_colspan = 7;
  17. var table_rows = iArray entsha ();
  18. // Yongeza isihloko setafile
  19. addHeader(itafile_imiqolo);
  20. // Yongeza umqolo omnye
  21. Object.each(recv_json, umsebenzi(irekhodi) {
  22. table_rows.push(addRow(record.key, record.val));
  23. });
  24. buyisela itafile_imiqolo;
  25. }

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.

  1. // Umlingo wephepha loncedo
  2. 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.
  1. /* Hlaziya imimandla yenkcazo yeHTML */
  2. umsebenzi processTableDesc(req) {
  3. ukuba (!req.responseText) {
  4. buya
  5. }
  6. var json_spec = JSON.decode(req.responseText);
  7. // Hlaziya inkcazo yetafile
  8. $(“TableDesc”).innerHTML = getJsonSpecElement(json_spec, “groups”, “dhcp6_relay.config.vlan”).description;
  9. }
  10. /* Hlaziya inkcazo yeparamitha yetafile yeHTML */
  11. Umsebenzi wenkquboUhlaziyo(recv_json) {
  12. // Hlaziya inkcazo yepharamitha yetafile
  13. var param_names = [
  14. {
  15. "alias": "Interface",
  16. “uhlobo”: “vtss_ifindex_t”,
  17. "igama": "vlanInterface",
  18. "isimamva": "."
  19. },
  20. {
  21. "alias": "Relay Interface",
  22. “uhlobo”: “vtss_ifindex_t”,
  23. "igama": "relayVlanInterface",
  24. “isimamva”: “. I-id yojongano olusetyenziselwa ukuhanjiswa. "
  25. },
  26. {
  27. "alias": "iNdawo yokuRelay",
  28. “uhlobo”: “mesa_ipv6_t”,
  29. "igama": "relay_destination",
  30. “isimamva”: “. Idilesi ye-IPv6 yeseva ye-DHCPv6 izicelo ziya kuthunyelwa kuyo. Ixabiso elimiselweyo 'ff05::1:3' mans 'nayiphi na iseva yeDHCP'."
  31. }
  32. ];
  33. updateTableParamsDesc(“TableParamsDesc”, recv_json, “dhcp6_relay.config.vlan.get”, param_names);
  34. }
  35. /* Fumana iinkcukacha zeJSON */
  36. window.addEvent('domready', umsebenzi () {
  37. loadXMLDoc("/json_spec", processTableDesc);
  38. requestJsonDoc(“jsonRpc.status.introspection.specific.inventory.get”, “dhcp6_relay.config.vlan”, processUpdate);
  39. });

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.
  1. #ukuba kuchaziwe(VTSS_SW_OPTION_DHCP6_RELAY)
  2. INTO(” Relay,dhcp6_relay.htm”);
  3. #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”.Microsemi-AN1256-Web-Abacwangcisi beNkqubo-iSicelo-MFANEKISO 6

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 zehlabathiMicrosemi-AN1256-Web-Abacwangcisi beNkqubo-iSicelo-MFANEKISO 7

Umthombo weVLAN(s) UqwalaseloMicrosemi-AN1256-Web-Abacwangcisi beNkqubo-iSicelo-MFANEKISO 8

Uqwalaselo lweZibukoMicrosemi-AN1256-Web-Abacwangcisi beNkqubo-iSicelo-MFANEKISO 9

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

  1. Wikipedia JavaScript https://en.wikipedia.org/wiki/JavaScript
  2. JSON https://www.json.org/
  3. MoonTools https://mootools.net/

Amaxwebhu / Izibonelelo

Microsemi AN1256 Web Programmers Isicelo [pdf] Isikhokelo somsebenzisi
AN1256, AN1256 Web Isicelo seNkqubo, Web Inkqubo yokuSebenza, iSicelo

Iimbekiselo

Shiya uluvo

Idilesi yakho ye-imeyile ayizupapashwa. Iindawo ezifunekayo ziphawulwe *