Author | Topic: Ajax | |
---|---|---|
Brian L. Wolfsohn | Ajax on Wed, 27 Feb 2008 01:02:05 +0100 (posted in xb2net and alaska-waa) What is the current state of ajax and xbase++ ?? Are there any implementation samples around ?? phil ide's site is down, so i can't get to any of those.. phil & sander were also talking about a comet/ajax implementation.. Is anyone doing any of this ?? Brian | |
Reinthaler Rudolf | Re: Ajax on Wed, 27 Feb 2008 08:05:31 +0100 Hello Brian, look at Dojo toolkit, I have implemented it in my xb2net applications, works perfect. I think it is also no problem with WAA. regards Rudolf "Brian L. Wolfsohn" <noblwnospam@cus.com> schrieb im Newsbeitrag news:Xns9A50C1A72FD96blwcuscom@80.154.33.133... > (posted in xb2net and alaska-waa) > What is the current state of ajax and xbase++ ?? > > Are there any implementation samples around ?? phil ide's site is down, so > i can't get to any of those.. > > phil & sander were also talking about a comet/ajax implementation.. > > Is anyone doing any of this ?? > > Brian | |
Allen Lee | Ajax on Fri, 29 Feb 2008 17:14:39 -0800 Hi Rudolf; After taking a look at the Dojo toolkit, I am curious to see how you combined javascript with Xbase code. I am using WAA for my web apps rather than xb2net so I am not familiar with xb2net coding methods. May I see some of your code examples to see how you have implemented the ajax techniques and to see how Dojo could work with WAA. Thank you | |
Reinthaler Rudolf | Re: Ajax on Sat, 01 Mar 2008 14:46:37 +0100 Hello, extracting a sample is complicated. I work with templates that include standard html code with dojo. In this templates I have tags like <% ... xbase variable or functions %> and to parse this templates at runtime. So you can all do what you want. You even can include java script code you generate in XBase++ at runtime. Hera a sample function to show a sorted dojo table from a array : function sorttable(aHeader,aTable) ****************************************************************** local cHTML := "",x cHTML += '<div class="tableContainer">' cHTML += '<table dojoType="SortableTable" widgetId="Tabelle" headClass="fixedHeader" tbodyClass="scrollContent" enableMultipleSelect="true" enableAlternateRows="true" rowAlternateClass="alternateRow" cellpadding="0" cellspacing="0" border="0">' cHTML += '<thead>' cHTML += '<tr>' for x := 1 to len(aHeader) cHTML += '<th field="' + aHeader[x] + '" dataType="' + gettabletype(aTable[1,x]) + '">' + aHeader[x] + '</th>' next x cHTML += '</tr>' cHTML += '</thead>' cHTML += '<tbody>' for x := 1 to len(aTable) cHTML += '<tr>' for y := 1 to len(aTable[x]) cHTML += '<td>' + alltrim(var2char(aTable[x,y])) + '</td>' next y cHTML += '</tr>' next x cHTML += '</tbody>' cHTML += '</table>' return cHTML function gettabletype(x) ****************************************************************** do case case valtype(x) = "C" return "String" case valtype(x) = "N" return "Number" case valtype(x) = "D" return "Date" other return "String" endcase return "String" regards Rudolf "Allen Lee" <al@infopro.bc.ca> schrieb im Newsbeitrag news:312297ad$5e93a41f$599@news.alaska-software.com... > Hi Rudolf; > > After taking a look at the Dojo toolkit, I am curious to see how you > combined javascript with Xbase code. > > I am using WAA for my web apps rather than xb2net so I am not familiar > with > xb2net coding methods. > > May I see some of your code examples to see how you have implemented the > ajax techniques and to see how Dojo could work with WAA. > > Thank you > > | |
Giuseppe Correnti | Re: Ajax on Sat, 01 Mar 2008 20:38:50 +0100 Hi, sorry for my bad English Rudolf, I don't think that Dojo is the solution for xbase and Ajax Dojo is a good and very nice option to make dinamic pages, but it's not good for xbase and ajax becouse it doesn't interact with web-server when the page is loaded. Ajax gives the possibility to update datas into html page without reload the entire page (like google heart), but datas must/can reside into the web-server. Ajax needs to interact with web-server!! A good solution for xbase's programmers is to use xb2net, with some javascript's functions into html, it's possible to update one or more values into a form, change colors,tables and more without reload the page. saluti Giuseppe "Reinthaler Rudolf" <office@c-tec.at> ha scritto nel messaggio news:166f0abd$a9b102c$7153@news.alaska-software.com... > Hello, > extracting a sample is complicated. I work with templates that include > standard html code with dojo. In this templates I have tags like <% ... > xbase variable or functions %> and to parse this templates at runtime. So > you can all do what you want. You even can include java script code you > generate in XBase++ at runtime. > Hera a sample function to show a sorted dojo table from a array : > > function sorttable(aHeader,aTable) > ****************************************************************** > local cHTML := "",x > cHTML += '<div class="tableContainer">' > cHTML += '<table dojoType="SortableTable" widgetId="Tabelle" > headClass="fixedHeader" tbodyClass="scrollContent" > enableMultipleSelect="true" enableAlternateRows="true" > rowAlternateClass="alternateRow" cellpadding="0" cellspacing="0" > border="0">' > cHTML += '<thead>' > cHTML += '<tr>' > for x := 1 to len(aHeader) > cHTML += '<th field="' + aHeader[x] + '" dataType="' + > gettabletype(aTable[1,x]) + '">' + aHeader[x] + '</th>' > next x > cHTML += '</tr>' > cHTML += '</thead>' > cHTML += '<tbody>' > for x := 1 to len(aTable) > cHTML += '<tr>' > for y := 1 to len(aTable[x]) > cHTML += '<td>' + alltrim(var2char(aTable[x,y])) + '</td>' > next y > cHTML += '</tr>' > next x > cHTML += '</tbody>' > cHTML += '</table>' > > > return cHTML > > function gettabletype(x) > ****************************************************************** > do case > case valtype(x) = "C" > return "String" > case valtype(x) = "N" > return "Number" > case valtype(x) = "D" > return "Date" > other > return "String" > endcase > return "String" > > > > > > regards > Rudolf > > > > "Allen Lee" <al@infopro.bc.ca> schrieb im Newsbeitrag > news:312297ad$5e93a41f$599@news.alaska-software.com... >> Hi Rudolf; >> >> After taking a look at the Dojo toolkit, I am curious to see how you >> combined javascript with Xbase code. >> >> I am using WAA for my web apps rather than xb2net so I am not familiar >> with >> xb2net coding methods. >> >> May I see some of your code examples to see how you have implemented the >> ajax techniques and to see how Dojo could work with WAA. >> >> Thank you >> >> > > | |
Reinthaler Rudolf | Re: Ajax on Sun, 02 Mar 2008 07:58:04 +0100 Hello Giuseppe, look at the function action_inhalt2() at the bottom of my test programm, this is a sample how I dynamically load a content from a HTML page with XB2NET and Dojo. regards Rudolf <HTML> <HEAD> <TITLE>{cTitel}</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> <script type="text/javascript"> var djConfig = { debugAtAllCosts: true, isDebug: true }; </script> <script type="text/javascript" src="dojo.js"></script> <script type="text/javascript"> dojo.require("dojo.io.*"); dojo.require("dojo.event.*"); dojo.require("dojo.widget.*"); dojo.require("dojo.widget.Dialog"); dojo.require("dojo.widget.TaskBar"); dojo.require("dojo.widget.Button"); dojo.require("dojo.widget.Rounded"); dojo.require("dojo.widget.FloatingPane"); dojo.require("dojo.widget.ContentPane"); dojo.require("dojo.widget.LayoutContainer"); dojo.require("dojo.widget.HtmlWidget"); dojo.require("dojo.widget.html.ComboBox"); dojo.require("dojo.widget.SplitContainer"); dojo.require("dojo.widget.DatePicker"); dojo.require("dojo.widget.Tree"); dojo.require("dojo.widget.TreeSelector"); dojo.require("dojo.widget.Checkbox"); dojo.require("dojo.widget.TabContainer"); dojo.require("dojo.widget.ResizeHandle"); dojo.require("dojo.widget.SortableTable"); dojo.registerModulePath("../ctec", "ctec"); dojo.require("ctec.*"); dojo.require("ctec.Controler"); dojo.addOnLoad(function(){ new lt.Controler(); dojo.hostenv.writeIncludes(); </script> <style type="text/css"> /*** The following is just an example of how to use the table. You can override any class names to be used if you wish. ***/ table { font-family:Lucida Grande, Verdana; font-size:0.8em; width:100%; border:1px solid #ccc; cursor:default; } * html div.tableContainer { /* IE only hack */ width:95%; border:1px solid #ccc; height: 285px; overflow-x:hidden; overflow-y: auto; } table td, table th{ border-right:1px solid #999; padding:2px; font-weight:normal; } table thead td, table thead th { background:#94BEFF; } * html div.tableContainer table thead tr td, * html div.tableContainer table thead tr th{ /* IE Only hacks */ position:relative; top:expression(dojo.html.getFirstAncestorByTag(this,'table').parentNode.scrollTop-2); } html>body tbody.scrollContent { height: 262px; overflow-x:hidden; overflow-y: auto; } tbody.scrollContent td, tbody.scrollContent tr td { background: #FFF; padding: 2px; } tbody.scrollContent tr.alternateRow td { background: #e3edfa; padding: 2px; } tbody.scrollContent tr.selected td { background: yellow; padding: 2px; } tbody.scrollContent tr:hover td { background: #a6c2e7; padding: 2px; } tbody.scrollContent tr.selected:hover td { background: #ff3; padding: 2px; } body { font-family : sans-serif; } .dojoDialog { background : #eee; border : 1px solid #999; -moz-border-radius : 5px; padding : 4px; } form { margin-bottom : 0; } /* group multiple buttons in a row */ .box { display: block; text-align: center; } .box .dojoButton { float: left; margin-right: 10px; } .dojoButton .dojoButtonContents { font-size: medium; } body { font-family : sans-serif; } .dojoDialog { background : #eee; border : 1px solid #999; -moz-border-radius : 5px; padding : 4px; } form { margin-bottom : 0; } /* group multiple buttons in a row */ .box { display: block; text-align: center; } .box .dojoButton { float: left; margin-right: 10px; } .dojoButton .dojoButtonContents { font-size: medium; } .dc { font-size: large; padding-top: 5px; padding-bottom: 5px; buttonsize: 100px; width: 100px; height: 20px; } </style> <style> html, body { height: 100%; width: 100%; overflow: hidden; } #main { height: 90%; width: 90%; left: 1%; top: 1%; position: relative; } </style> <script type="text/javascript"> var dlg1,dlg0; function init(e) { dlg0 = dojo.widget.byId("login"); var btn1 = document.getElementById("hider0"); dlg0.setCloseControl(btn1); dlg1 = dojo.widget.byId("umsatz"); var btn2 = document.getElementById("hider1"); dlg1.setCloseControl(btn2); } dojo.addOnLoad(init); </script> <div dojoType="FloatingPane" id="login" title="Login" iconSrc="imges/monitor.gif" constrainToContainer="true" hasShadow="true" resizable="true" displayMinimizeAction="true" displayMaximizeAction="true" contentWrapper="none" toggle="explode" style="width: 300px; position: absolute; height: 170px; left: 150px; top: 150px; display: none" > <form name="login" > <table> <tr> <td>User ID:</td> <td><input type="text" name="UID"></td> </tr> <tr> <td>Passwort:</td> <td><input type="text" name="PWD"></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" id="hider0" value="OK"></td> </tr> </table> </form> </div> <div dojoType="FloatingPane" id="umsatz" title="Login" iconSrc="images/monitor.gif" constrainToContainer="true" hasShadow="true" resizable="true" displayMinimizeAction="true" displayMaximizeAction="true" contentWrapper="none" toggle="explode" style="width: 600px; position: absolute; height: 400px; left: 150px; top: 150px; display: none" > <form name="login2" > <table> <tr> <td>User ID:</td> <td><input type="text" name="UID"></td> </tr> <tr> <td>Passwort:</td> <td><input type="text" name="PWD"></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" id="hider0" value="OK"></td> </tr> </table> </form> </div> </HEAD> <body> <div dojoType="LayoutContainer" layoutChildPriority='none' style="border: 0px solid black; padding: 1px;" id="main" executeScripts="true"> <div dojoType="ContentPane" layoutAlign="left" style="background-color: #eeeeee; width: 128px; margin: 5px;" executeScripts="true"> <div class="box"> <button dojoType="button" onclick="dlg0.show()"> <div class="dc">Login</div></button> <button dojoType="button" onclick='open("/dojosamples/editor.html",null,"height=800,width=1000,status=yes,toolbar=no,menubar=no,location=no");'> <div class="dc">Editor</div></button> <button dojoType="button" onclick="action_test()"> <div class="dc">Fenster 2</div></button> <button dojoType="button" onclick="action_inhalt()"> <div class="dc">Inhalt</div></button> <button dojoType="button" onclick="action_inhalt2()"> <div class="dc">ext.Inhalt</div></button> </div> <br clear=both> </div> <div dojoType="ContentPane" layoutAlign="top" style="background-color: #eeeeee; height: 40px; margin: 5px;" executeScripts="true"> {cTMessage} </div> <div dojoType="ContentPane" layoutAlign="bottom" style="background-color: #eeeeee; height: 20px; margin: 5px;" executeScripts="true"> {cTMessage} </div> <div dojoType="ContentPane" id="mainframe" layoutAlign="client" style="background-color: #eeeeee; padding: 10px; margin: 5px;" executeScripts="true"> <div id="inhalt"> {cKundeninfo}<br> {cHTML} </div> </div> </div> </body> </HTML> <script type="text/javascript"> function action_test() { dlg1 = dojo.widget.byId("umsatz"); dlg1.show(); } <!-- Activate cloak </SCRIPT> <script type="text/javascript"> function action_inhalt(){ dojo.io.bind({ url: '../rep/export.html', handler: function(type,data,evt) { if (type == 'error'){ alert('Fehler beim einlesen des Frames!')} else{ dojo.byId('mainframe').innerHTML = data} } }); } </SCRIPT> <script type="text/javascript"> function action_inhalt2(){ dojo.io.bind({ url: 'http://localhost:81?TESTINHALT', handler: function(type,data,evt) { if (type == 'error'){ alert('Fehler beim einlesen des MainFrames!') }else{ dojo.byId('mainframe').innerHTML = data} } }); } </SCRIPT> | |
Giuseppe Correnti | Re: Ajax on Sun, 02 Mar 2008 10:39:07 +0100 Hi Rudolf, I know dojo, and I have made some web's sites with it, but it is not necessary for Ajax, you use a dojo's function like mine. Look this javascripts, it works without Dojo or with dojo, with simple HTML's page or Flash or webbuilders, etc. I think that it works also with others severs,not only with xb2net, that answer to a post request. <script type="text/javascript"> function OpenAjax(richiesta) { if (window.XMLHttpRequest) { req = new XMLHttpRequest(); if (req.overrideMimeType) { req.overrideMimeType('text/xml'); } } else { req = new ActiveXObject("Msxml2.XMLHTTP"); } req .open("POST", richiesta,false) req.send(null) if(req.status!=200) { alert('server busy') return null } else { manipulate this line to make modification into your html's pages return req.responseText the server's response if pwd ok = 'connected' else 'disconnected' and if you use sessions the server set oclient:setcargo('connected',.t.) or false you can eval(req.responseText) to send a complex response like "alert('bad password');return 'disconnected')" or array to evaluate to change childs into select type, or change the status of buttos and more ......... } } </script> //in the html Login Button put onclick="form1.status.value=OpenAjax('/?testpassword&pwd='+form1.pwd.value)" this all!!! "Reinthaler Rudolf" <office@c-tec.at> ha scritto nel messaggio news:44544e60$64af468a$162@news.alaska-software.com... > Hello Giuseppe, > look at the function action_inhalt2() at the bottom of my test programm, > this is a sample how I dynamically load a content from a HTML page with > XB2NET and Dojo. > > regards > Rudolf > > > <HTML> > <HEAD> > <TITLE>{cTitel}</TITLE> > <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> > <script type="text/javascript"> > > var djConfig = { > debugAtAllCosts: true, > isDebug: true > }; > > </script> > <script type="text/javascript" src="dojo.js"></script> > <script type="text/javascript"> > dojo.require("dojo.io.*"); > dojo.require("dojo.event.*"); > dojo.require("dojo.widget.*"); > dojo.require("dojo.widget.Dialog"); > dojo.require("dojo.widget.TaskBar"); > dojo.require("dojo.widget.Button"); > dojo.require("dojo.widget.Rounded"); > dojo.require("dojo.widget.FloatingPane"); > dojo.require("dojo.widget.ContentPane"); > dojo.require("dojo.widget.LayoutContainer"); > dojo.require("dojo.widget.HtmlWidget"); > dojo.require("dojo.widget.html.ComboBox"); > dojo.require("dojo.widget.SplitContainer"); > dojo.require("dojo.widget.DatePicker"); > dojo.require("dojo.widget.Tree"); > dojo.require("dojo.widget.TreeSelector"); > dojo.require("dojo.widget.Checkbox"); > dojo.require("dojo.widget.TabContainer"); > dojo.require("dojo.widget.ResizeHandle"); > dojo.require("dojo.widget.SortableTable"); > dojo.registerModulePath("../ctec", "ctec"); > dojo.require("ctec.*"); > dojo.require("ctec.Controler"); > > dojo.addOnLoad(function(){ > new lt.Controler(); > > dojo.hostenv.writeIncludes(); > </script> > > > <style type="text/css"> > /*** > The following is just an example of how to use the > table. > You can override any class names to be used if you > wish. > ***/ > > table { > font-family:Lucida Grande, Verdana; > font-size:0.8em; > width:100%; > border:1px solid #ccc; > cursor:default; > } > > * html div.tableContainer { /* IE only hack */ > width:95%; > border:1px solid #ccc; > height: 285px; > overflow-x:hidden; > overflow-y: auto; > } > > table td, > table th{ > border-right:1px solid #999; > padding:2px; > font-weight:normal; > } > table thead td, table thead th { > background:#94BEFF; > } > > * html div.tableContainer table thead tr td, > * html div.tableContainer table thead tr th{ > /* IE Only hacks */ > position:relative; > > top:expression(dojo.html.getFirstAncestorByTag(this,'table').parentNode.scrollTop-2); > } > > html>body tbody.scrollContent { > height: 262px; > overflow-x:hidden; > overflow-y: auto; > } > > tbody.scrollContent td, tbody.scrollContent tr td { > background: #FFF; > padding: 2px; > } > > tbody.scrollContent tr.alternateRow td { > background: #e3edfa; > padding: 2px; > } > > tbody.scrollContent tr.selected td { > background: yellow; > padding: 2px; > } > tbody.scrollContent tr:hover td { > background: #a6c2e7; > padding: 2px; > } > tbody.scrollContent tr.selected:hover td { > background: #ff3; > padding: 2px; > } > > body { font-family : sans-serif; } > .dojoDialog { > background : #eee; > border : 1px solid #999; > -moz-border-radius : 5px; > padding : 4px; > } > > form { > margin-bottom : 0; > } > > /* group multiple buttons in a row */ > .box { > display: block; > text-align: center; > } > .box .dojoButton { > float: left; > margin-right: 10px; > } > .dojoButton .dojoButtonContents { > font-size: medium; > } > > > body { font-family : sans-serif; } > .dojoDialog { > background : #eee; > border : 1px solid #999; > -moz-border-radius : 5px; > padding : 4px; > } > > form { > margin-bottom : 0; > } > > /* group multiple buttons in a row */ > .box { > display: block; > text-align: center; > } > .box .dojoButton { > float: left; > margin-right: 10px; > } > .dojoButton .dojoButtonContents { > font-size: medium; > } > > .dc { > font-size: large; > padding-top: 5px; > padding-bottom: 5px; > buttonsize: 100px; > width: 100px; > height: 20px; > } > > </style> > > <style> > html, body { > height: 100%; > width: 100%; > overflow: hidden; > } > #main { > height: 90%; > width: 90%; > left: 1%; > top: 1%; > position: relative; > } > > </style> > > <script type="text/javascript"> > var dlg1,dlg0; > function init(e) { > dlg0 = dojo.widget.byId("login"); > var btn1 = document.getElementById("hider0"); > dlg0.setCloseControl(btn1); > dlg1 = dojo.widget.byId("umsatz"); > var btn2 = document.getElementById("hider1"); > dlg1.setCloseControl(btn2); > } > dojo.addOnLoad(init); > > </script> > > > > > <div dojoType="FloatingPane" > id="login" > title="Login" > iconSrc="imges/monitor.gif" > constrainToContainer="true" > hasShadow="true" > resizable="true" > displayMinimizeAction="true" > displayMaximizeAction="true" > contentWrapper="none" > > toggle="explode" > style="width: 300px; position: absolute; height: 170px; left: 150px; > top: 150px; display: none" > > > <form name="login" > > <table> > <tr> > <td>User ID:</td> > <td><input type="text" name="UID"></td> > </tr> > <tr> > <td>Passwort:</td> > <td><input type="text" name="PWD"></td> > </tr> > <tr> > <td colspan="2" align="center"> > <input type="submit" id="hider0" value="OK"></td> > > </tr> > </table> > </form> > > </div> > > > > <div dojoType="FloatingPane" > id="umsatz" > title="Login" > iconSrc="images/monitor.gif" > constrainToContainer="true" > hasShadow="true" > resizable="true" > displayMinimizeAction="true" > displayMaximizeAction="true" > contentWrapper="none" > > toggle="explode" > style="width: 600px; position: absolute; height: 400px; left: 150px; > top: 150px; display: none" > > > <form name="login2" > > <table> > <tr> > <td>User ID:</td> > <td><input type="text" name="UID"></td> > </tr> > <tr> > <td>Passwort:</td> > <td><input type="text" name="PWD"></td> > </tr> > <tr> > <td colspan="2" align="center"> > <input type="submit" id="hider0" value="OK"></td> > > </tr> > </table> > </form> > > </div> > > > > </HEAD> > > > > <body> > <div dojoType="LayoutContainer" layoutChildPriority='none' style="border: > 0px solid black; padding: 1px;" id="main" executeScripts="true"> > > <div dojoType="ContentPane" layoutAlign="left" style="background-color: > #eeeeee; width: 128px; margin: 5px;" executeScripts="true"> > > <div class="box"> > <button dojoType="button" onclick="dlg0.show()"> <div > class="dc">Login</div></button> > <button dojoType="button" > onclick='open("/dojosamples/editor.html",null,"height=800,width=1000,status=yes,toolbar=no,menubar=no,location=no");'> > <div class="dc">Editor</div></button> > <button dojoType="button" onclick="action_test()"> <div > class="dc">Fenster 2</div></button> > <button dojoType="button" onclick="action_inhalt()"> <div > class="dc">Inhalt</div></button> > <button dojoType="button" onclick="action_inhalt2()"> <div > class="dc">ext.Inhalt</div></button> > </div> > <br clear=both> > > </div> > > <div dojoType="ContentPane" layoutAlign="top" style="background-color: > #eeeeee; height: 40px; margin: 5px;" executeScripts="true"> > {cTMessage} > </div> > > > <div dojoType="ContentPane" layoutAlign="bottom" style="background-color: > #eeeeee; height: 20px; margin: 5px;" executeScripts="true"> > {cTMessage} > </div> > > <div dojoType="ContentPane" id="mainframe" layoutAlign="client" > style="background-color: #eeeeee; padding: 10px; margin: 5px;" > executeScripts="true"> > <div id="inhalt"> > {cKundeninfo}<br> > {cHTML} > > </div> > > > </div> > > </div> > </body> > </HTML> > > > <script type="text/javascript"> > function action_test() > { > dlg1 = dojo.widget.byId("umsatz"); > dlg1.show(); > } <!-- Activate cloak > </SCRIPT> > > > > <script type="text/javascript"> > function action_inhalt(){ > dojo.io.bind({ > url: '../rep/export.html', > handler: function(type,data,evt) > { > if (type == 'error'){ alert('Fehler beim einlesen des Frames!')} > else{ > dojo.byId('mainframe').innerHTML = data} > } > }); > } > </SCRIPT> > > > <script type="text/javascript"> > function action_inhalt2(){ > dojo.io.bind({ > url: 'http://localhost:81?TESTINHALT', > handler: function(type,data,evt) > { > if (type == 'error'){ > alert('Fehler beim einlesen des MainFrames!') > }else{ > dojo.byId('mainframe').innerHTML = data} > } > }); > } > </SCRIPT> > > > | |
Reinthaler Rudolf | Re: Ajax on Sun, 02 Mar 2008 18:32:36 +0100 Hello Giuseppe, thank's, your way looks also very interesting. regards Rudolf "Giuseppe Correnti" <airsoft1@tin.it> schrieb im Newsbeitrag news:6f3028cf$1f7f619d$673@news.alaska-software.com... > Hi Rudolf, > I know dojo, and I have made some web's sites with it, but it is not > necessary for Ajax, you use a dojo's function like mine. > Look this javascripts, it works without Dojo or with dojo, with simple > HTML's page or Flash or webbuilders, etc. > I think that it works also with others severs,not only with xb2net, that > answer to a post request. > <script type="text/javascript"> > function OpenAjax(richiesta) > { > if (window.XMLHttpRequest) > { > req = new XMLHttpRequest(); > if (req.overrideMimeType) > { > req.overrideMimeType('text/xml'); > } > } > else > { > req = new ActiveXObject("Msxml2.XMLHTTP"); > } > req .open("POST", richiesta,false) > req.send(null) > if(req.status!=200) > { > alert('server busy') > return null > } > else > { > manipulate this line to make modification into your html's > pages > return req.responseText the server's response > if pwd ok = 'connected' > else 'disconnected' > and if you use sessions > the server set > > oclient:setcargo('connected',.t.) or false > you can > eval(req.responseText) to send a complex response > like "alert('bad > password');return 'disconnected')" > or array to evaluate to > change childs into select type, or change the status of buttos > and more ......... > } > } > </script> > //in the html Login Button put > onclick="form1.status.value=OpenAjax('/?testpassword&pwd='+form1.pwd.value)" > this all!!! > > > "Reinthaler Rudolf" <office@c-tec.at> ha scritto nel messaggio > news:44544e60$64af468a$162@news.alaska-software.com... >> Hello Giuseppe, >> look at the function action_inhalt2() at the bottom of my test programm, >> this is a sample how I dynamically load a content from a HTML page with >> XB2NET and Dojo. >> >> regards >> Rudolf >> >> >> <HTML> >> <HEAD> >> <TITLE>{cTitel}</TITLE> >> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> >> <script type="text/javascript"> >> >> var djConfig = { >> debugAtAllCosts: true, >> isDebug: true >> }; >> >> </script> >> <script type="text/javascript" src="dojo.js"></script> >> <script type="text/javascript"> >> dojo.require("dojo.io.*"); >> dojo.require("dojo.event.*"); >> dojo.require("dojo.widget.*"); >> dojo.require("dojo.widget.Dialog"); >> dojo.require("dojo.widget.TaskBar"); >> dojo.require("dojo.widget.Button"); >> dojo.require("dojo.widget.Rounded"); >> dojo.require("dojo.widget.FloatingPane"); >> dojo.require("dojo.widget.ContentPane"); >> dojo.require("dojo.widget.LayoutContainer"); >> dojo.require("dojo.widget.HtmlWidget"); >> dojo.require("dojo.widget.html.ComboBox"); >> dojo.require("dojo.widget.SplitContainer"); >> dojo.require("dojo.widget.DatePicker"); >> dojo.require("dojo.widget.Tree"); >> dojo.require("dojo.widget.TreeSelector"); >> dojo.require("dojo.widget.Checkbox"); >> dojo.require("dojo.widget.TabContainer"); >> dojo.require("dojo.widget.ResizeHandle"); >> dojo.require("dojo.widget.SortableTable"); >> dojo.registerModulePath("../ctec", "ctec"); >> dojo.require("ctec.*"); >> dojo.require("ctec.Controler"); >> >> dojo.addOnLoad(function(){ >> new lt.Controler(); >> >> dojo.hostenv.writeIncludes(); >> </script> >> >> >> <style type="text/css"> >> /*** >> The following is just an example of how to use the >> table. >> You can override any class names to be used if you >> wish. >> ***/ >> >> table { >> font-family:Lucida Grande, Verdana; >> font-size:0.8em; >> width:100%; >> border:1px solid #ccc; >> cursor:default; >> } >> >> * html div.tableContainer { /* IE only hack */ >> width:95%; >> border:1px solid #ccc; >> height: 285px; >> overflow-x:hidden; >> overflow-y: auto; >> } >> >> table td, >> table th{ >> border-right:1px solid #999; >> padding:2px; >> font-weight:normal; >> } >> table thead td, table thead th { >> background:#94BEFF; >> } >> >> * html div.tableContainer table thead tr td, >> * html div.tableContainer table thead tr th{ >> /* IE Only hacks */ >> position:relative; >> >> top:expression(dojo.html.getFirstAncestorByTag(this,'table').parentNode.scrollTop-2); >> } >> >> html>body tbody.scrollContent { >> height: 262px; >> overflow-x:hidden; >> overflow-y: auto; >> } >> >> tbody.scrollContent td, tbody.scrollContent tr td { >> background: #FFF; >> padding: 2px; >> } >> >> tbody.scrollContent tr.alternateRow td { >> background: #e3edfa; >> padding: 2px; >> } >> >> tbody.scrollContent tr.selected td { >> background: yellow; >> padding: 2px; >> } >> tbody.scrollContent tr:hover td { >> background: #a6c2e7; >> padding: 2px; >> } >> tbody.scrollContent tr.selected:hover td { >> background: #ff3; >> padding: 2px; >> } >> >> body { font-family : sans-serif; } >> .dojoDialog { >> background : #eee; >> border : 1px solid #999; >> -moz-border-radius : 5px; >> padding : 4px; >> } >> >> form { >> margin-bottom : 0; >> } >> >> /* group multiple buttons in a row */ >> .box { >> display: block; >> text-align: center; >> } >> .box .dojoButton { >> float: left; >> margin-right: 10px; >> } >> .dojoButton .dojoButtonContents { >> font-size: medium; >> } >> >> >> body { font-family : sans-serif; } >> .dojoDialog { >> background : #eee; >> border : 1px solid #999; >> -moz-border-radius : 5px; >> padding : 4px; >> } >> >> form { >> margin-bottom : 0; >> } >> >> /* group multiple buttons in a row */ >> .box { >> display: block; >> text-align: center; >> } >> .box .dojoButton { >> float: left; >> margin-right: 10px; >> } >> .dojoButton .dojoButtonContents { >> font-size: medium; >> } >> >> .dc { >> font-size: large; >> padding-top: 5px; >> padding-bottom: 5px; >> buttonsize: 100px; >> width: 100px; >> height: 20px; >> } >> >> </style> >> >> <style> >> html, body { >> height: 100%; >> width: 100%; >> overflow: hidden; >> } >> #main { >> height: 90%; >> width: 90%; >> left: 1%; >> top: 1%; >> position: relative; >> } >> >> </style> >> >> <script type="text/javascript"> >> var dlg1,dlg0; >> function init(e) { >> dlg0 = dojo.widget.byId("login"); >> var btn1 = document.getElementById("hider0"); >> dlg0.setCloseControl(btn1); >> dlg1 = dojo.widget.byId("umsatz"); >> var btn2 = document.getElementById("hider1"); >> dlg1.setCloseControl(btn2); >> } >> dojo.addOnLoad(init); >> >> </script> >> >> >> >> >> <div dojoType="FloatingPane" >> id="login" >> title="Login" >> iconSrc="imges/monitor.gif" >> constrainToContainer="true" >> hasShadow="true" >> resizable="true" >> displayMinimizeAction="true" >> displayMaximizeAction="true" >> contentWrapper="none" >> >> toggle="explode" >> style="width: 300px; position: absolute; height: 170px; left: 150px; >> top: 150px; display: none" > >> >> <form name="login" > >> <table> >> <tr> >> <td>User ID:</td> >> <td><input type="text" name="UID"></td> >> </tr> >> <tr> >> <td>Passwort:</td> >> <td><input type="text" name="PWD"></td> >> </tr> >> <tr> >> <td colspan="2" align="center"> >> <input type="submit" id="hider0" value="OK"></td> >> >> </tr> >> </table> >> </form> >> >> </div> >> >> >> >> <div dojoType="FloatingPane" >> id="umsatz" >> title="Login" >> iconSrc="images/monitor.gif" >> constrainToContainer="true" >> hasShadow="true" >> resizable="true" >> displayMinimizeAction="true" >> displayMaximizeAction="true" >> contentWrapper="none" >> >> toggle="explode" >> style="width: 600px; position: absolute; height: 400px; left: 150px; >> top: 150px; display: none" > >> >> <form name="login2" > >> <table> >> <tr> >> <td>User ID:</td> >> <td><input type="text" name="UID"></td> >> </tr> >> <tr> >> <td>Passwort:</td> >> <td><input type="text" name="PWD"></td> >> </tr> >> <tr> >> <td colspan="2" align="center"> >> <input type="submit" id="hider0" value="OK"></td> >> >> </tr> >> </table> >> </form> >> >> </div> >> >> >> >> </HEAD> >> >> >> >> <body> >> <div dojoType="LayoutContainer" layoutChildPriority='none' style="border: >> 0px solid black; padding: 1px;" id="main" executeScripts="true"> >> >> <div dojoType="ContentPane" layoutAlign="left" style="background-color: >> #eeeeee; width: 128px; margin: 5px;" executeScripts="true"> >> >> <div class="box"> >> <button dojoType="button" onclick="dlg0.show()"> <div >> class="dc">Login</div></button> >> <button dojoType="button" >> onclick='open("/dojosamples/editor.html",null,"height=800,width=1000,status=yes,toolbar=no,menubar=no,location=no");'> >> <div class="dc">Editor</div></button> >> <button dojoType="button" onclick="action_test()"> <div >> class="dc">Fenster 2</div></button> >> <button dojoType="button" onclick="action_inhalt()"> <div >> class="dc">Inhalt</div></button> >> <button dojoType="button" onclick="action_inhalt2()"> <div >> class="dc">ext.Inhalt</div></button> >> </div> >> <br clear=both> >> >> </div> >> >> <div dojoType="ContentPane" layoutAlign="top" style="background-color: >> #eeeeee; height: 40px; margin: 5px;" executeScripts="true"> >> {cTMessage} >> </div> >> >> >> <div dojoType="ContentPane" layoutAlign="bottom" >> style="background-color: #eeeeee; height: 20px; margin: 5px;" >> executeScripts="true"> >> {cTMessage} >> </div> >> >> <div dojoType="ContentPane" id="mainframe" layoutAlign="client" >> style="background-color: #eeeeee; padding: 10px; margin: 5px;" >> executeScripts="true"> >> <div id="inhalt"> >> {cKundeninfo}<br> >> {cHTML} >> >> </div> >> >> >> </div> >> >> </div> >> </body> >> </HTML> >> >> >> <script type="text/javascript"> >> function action_test() >> { >> dlg1 = dojo.widget.byId("umsatz"); >> dlg1.show(); >> } <!-- Activate cloak >> </SCRIPT> >> >> >> >> <script type="text/javascript"> >> function action_inhalt(){ >> dojo.io.bind({ >> url: '../rep/export.html', >> handler: function(type,data,evt) >> { >> if (type == 'error'){ alert('Fehler beim einlesen des Frames!')} >> else{ >> dojo.byId('mainframe').innerHTML = data} >> } >> }); >> } >> </SCRIPT> >> >> >> <script type="text/javascript"> >> function action_inhalt2(){ >> dojo.io.bind({ >> url: 'http://localhost:81?TESTINHALT', >> handler: function(type,data,evt) >> { >> if (type == 'error'){ >> alert('Fehler beim einlesen des MainFrames!') >> }else{ >> dojo.byId('mainframe').innerHTML = data} >> } >> }); >> } >> </SCRIPT> >> >> >> > > | |
Jeremy Suiter | Re: Ajax on Mon, 03 Mar 2008 14:25:52 +0000 If anyone is interested I have a little demo program that shows Ajax working using WAA. At the moment it just shows how to update 2 drop down listboxes and a reference field on the fly as that's what I mostly use Ajax for. It's a 6MB zip file if anyone wants it so email me and I'll send it to you. Jeremy "Reinthaler Rudolf" <office@c-tec.at> wrote in message news:3dc67f9$6a2f864c$676@news.alaska-software.com... > Hello Giuseppe, > thank's, your way looks also very interesting. > regards > Rudolf > > "Giuseppe Correnti" <airsoft1@tin.it> schrieb im Newsbeitrag > news:6f3028cf$1f7f619d$673@news.alaska-software.com... >> Hi Rudolf, >> I know dojo, and I have made some web's sites with it, but it is not >> necessary for Ajax, you use a dojo's function like mine. >> Look this javascripts, it works without Dojo or with dojo, with simple >> HTML's page or Flash or webbuilders, etc. >> I think that it works also with others severs,not only with xb2net, that >> answer to a post request. >> <script type="text/javascript"> >> function OpenAjax(richiesta) >> { >> if (window.XMLHttpRequest) >> { >> req = new XMLHttpRequest(); >> if (req.overrideMimeType) >> { >> req.overrideMimeType('text/xml'); >> } >> } >> else >> { >> req = new ActiveXObject("Msxml2.XMLHTTP"); >> } >> req .open("POST", richiesta,false) >> req.send(null) >> if(req.status!=200) >> { >> alert('server busy') >> return null >> } >> else >> { >> manipulate this line to make modification into your html's >> pages >> return req.responseText the server's response >> if pwd ok = 'connected' >> else 'disconnected' >> and if you use sessions >> the server set >> >> oclient:setcargo('connected',.t.) or false >> you can >> eval(req.responseText) to send a complex response >> like "alert('bad >> password');return 'disconnected')" >> or array to evaluate to >> change childs into select type, or change the status of buttos >> and more ......... >> } >> } >> </script> >> //in the html Login Button put >> onclick="form1.status.value=OpenAjax('/?testpassword&pwd='+form1.pwd.value)" >> this all!!! >> >> >> "Reinthaler Rudolf" <office@c-tec.at> ha scritto nel messaggio >> news:44544e60$64af468a$162@news.alaska-software.com... >>> Hello Giuseppe, >>> look at the function action_inhalt2() at the bottom of my test programm, >>> this is a sample how I dynamically load a content from a HTML page with >>> XB2NET and Dojo. >>> >>> regards >>> Rudolf >>> >>> >>> <HTML> >>> <HEAD> >>> <TITLE>{cTitel}</TITLE> >>> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> >>> <script type="text/javascript"> >>> >>> var djConfig = { >>> debugAtAllCosts: true, >>> isDebug: true >>> }; >>> >>> </script> >>> <script type="text/javascript" src="dojo.js"></script> >>> <script type="text/javascript"> >>> dojo.require("dojo.io.*"); >>> dojo.require("dojo.event.*"); >>> dojo.require("dojo.widget.*"); >>> dojo.require("dojo.widget.Dialog"); >>> dojo.require("dojo.widget.TaskBar"); >>> dojo.require("dojo.widget.Button"); >>> dojo.require("dojo.widget.Rounded"); >>> dojo.require("dojo.widget.FloatingPane"); >>> dojo.require("dojo.widget.ContentPane"); >>> dojo.require("dojo.widget.LayoutContainer"); >>> dojo.require("dojo.widget.HtmlWidget"); >>> dojo.require("dojo.widget.html.ComboBox"); >>> dojo.require("dojo.widget.SplitContainer"); >>> dojo.require("dojo.widget.DatePicker"); >>> dojo.require("dojo.widget.Tree"); >>> dojo.require("dojo.widget.TreeSelector"); >>> dojo.require("dojo.widget.Checkbox"); >>> dojo.require("dojo.widget.TabContainer"); >>> dojo.require("dojo.widget.ResizeHandle"); >>> dojo.require("dojo.widget.SortableTable"); >>> dojo.registerModulePath("../ctec", "ctec"); >>> dojo.require("ctec.*"); >>> dojo.require("ctec.Controler"); >>> >>> dojo.addOnLoad(function(){ >>> new lt.Controler(); >>> >>> dojo.hostenv.writeIncludes(); >>> </script> >>> >>> >>> <style type="text/css"> >>> /*** >>> The following is just an example of how to use >>> the table. >>> You can override any class names to be used if >>> you wish. >>> ***/ >>> >>> table { >>> font-family:Lucida Grande, Verdana; >>> font-size:0.8em; >>> width:100%; >>> border:1px solid #ccc; >>> cursor:default; >>> } >>> >>> * html div.tableContainer { /* IE only hack */ >>> width:95%; >>> border:1px solid #ccc; >>> height: 285px; >>> overflow-x:hidden; >>> overflow-y: auto; >>> } >>> >>> table td, >>> table th{ >>> border-right:1px solid #999; >>> padding:2px; >>> font-weight:normal; >>> } >>> table thead td, table thead th { >>> background:#94BEFF; >>> } >>> >>> * html div.tableContainer table thead tr td, >>> * html div.tableContainer table thead tr th{ >>> /* IE Only hacks */ >>> position:relative; >>> >>> top:expression(dojo.html.getFirstAncestorByTag(this,'table').parentNode.scrollTop-2); >>> } >>> >>> html>body tbody.scrollContent { >>> height: 262px; >>> overflow-x:hidden; >>> overflow-y: auto; >>> } >>> >>> tbody.scrollContent td, tbody.scrollContent tr td { >>> background: #FFF; >>> padding: 2px; >>> } >>> >>> tbody.scrollContent tr.alternateRow td { >>> background: #e3edfa; >>> padding: 2px; >>> } >>> >>> tbody.scrollContent tr.selected td { >>> background: yellow; >>> padding: 2px; >>> } >>> tbody.scrollContent tr:hover td { >>> background: #a6c2e7; >>> padding: 2px; >>> } >>> tbody.scrollContent tr.selected:hover td { >>> background: #ff3; >>> padding: 2px; >>> } >>> >>> body { font-family : sans-serif; } >>> .dojoDialog { >>> background : #eee; >>> border : 1px solid #999; >>> -moz-border-radius : 5px; >>> padding : 4px; >>> } >>> >>> form { >>> margin-bottom : 0; >>> } >>> >>> /* group multiple buttons in a row */ >>> .box { >>> display: block; >>> text-align: center; >>> } >>> .box .dojoButton { >>> float: left; >>> margin-right: 10px; >>> } >>> .dojoButton .dojoButtonContents { >>> font-size: medium; >>> } >>> >>> >>> body { font-family : sans-serif; } >>> .dojoDialog { >>> background : #eee; >>> border : 1px solid #999; >>> -moz-border-radius : 5px; >>> padding : 4px; >>> } >>> >>> form { >>> margin-bottom : 0; >>> } >>> >>> /* group multiple buttons in a row */ >>> .box { >>> display: block; >>> text-align: center; >>> } >>> .box .dojoButton { >>> float: left; >>> margin-right: 10px; >>> } >>> .dojoButton .dojoButtonContents { >>> font-size: medium; >>> } >>> >>> .dc { >>> font-size: large; >>> padding-top: 5px; >>> padding-bottom: 5px; >>> buttonsize: 100px; >>> width: 100px; >>> height: 20px; >>> } >>> >>> </style> >>> >>> <style> >>> html, body { >>> height: 100%; >>> width: 100%; >>> overflow: hidden; >>> } >>> #main { >>> height: 90%; >>> width: 90%; >>> left: 1%; >>> top: 1%; >>> position: relative; >>> } >>> >>> </style> >>> >>> <script type="text/javascript"> >>> var dlg1,dlg0; >>> function init(e) { >>> dlg0 = dojo.widget.byId("login"); >>> var btn1 = document.getElementById("hider0"); >>> dlg0.setCloseControl(btn1); >>> dlg1 = dojo.widget.byId("umsatz"); >>> var btn2 = document.getElementById("hider1"); >>> dlg1.setCloseControl(btn2); >>> } >>> dojo.addOnLoad(init); >>> >>> </script> >>> >>> >>> >>> >>> <div dojoType="FloatingPane" >>> id="login" >>> title="Login" >>> iconSrc="imges/monitor.gif" >>> constrainToContainer="true" >>> hasShadow="true" >>> resizable="true" >>> displayMinimizeAction="true" >>> displayMaximizeAction="true" >>> contentWrapper="none" >>> >>> toggle="explode" >>> style="width: 300px; position: absolute; height: 170px; left: 150px; >>> top: 150px; display: none" > >>> >>> <form name="login" > >>> <table> >>> <tr> >>> <td>User ID:</td> >>> <td><input type="text" name="UID"></td> >>> </tr> >>> <tr> >>> <td>Passwort:</td> >>> <td><input type="text" name="PWD"></td> >>> </tr> >>> <tr> >>> <td colspan="2" align="center"> >>> <input type="submit" id="hider0" value="OK"></td> >>> >>> </tr> >>> </table> >>> </form> >>> >>> </div> >>> >>> >>> >>> <div dojoType="FloatingPane" >>> id="umsatz" >>> title="Login" >>> iconSrc="images/monitor.gif" >>> constrainToContainer="true" >>> hasShadow="true" >>> resizable="true" >>> displayMinimizeAction="true" >>> displayMaximizeAction="true" >>> contentWrapper="none" >>> >>> toggle="explode" >>> style="width: 600px; position: absolute; height: 400px; left: 150px; >>> top: 150px; display: none" > >>> >>> <form name="login2" > >>> <table> >>> <tr> >>> <td>User ID:</td> >>> <td><input type="text" name="UID"></td> >>> </tr> >>> <tr> >>> <td>Passwort:</td> >>> <td><input type="text" name="PWD"></td> >>> </tr> >>> <tr> >>> <td colspan="2" align="center"> >>> <input type="submit" id="hider0" value="OK"></td> >>> >>> </tr> >>> </table> >>> </form> >>> >>> </div> >>> >>> >>> >>> </HEAD> >>> >>> >>> >>> <body> >>> <div dojoType="LayoutContainer" layoutChildPriority='none' >>> style="border: 0px solid black; padding: 1px;" id="main" >>> executeScripts="true"> >>> >>> <div dojoType="ContentPane" layoutAlign="left" style="background-color: >>> #eeeeee; width: 128px; margin: 5px;" executeScripts="true"> >>> >>> <div class="box"> >>> <button dojoType="button" onclick="dlg0.show()"> <div >>> class="dc">Login</div></button> >>> <button dojoType="button" >>> onclick='open("/dojosamples/editor.html",null,"height=800,width=1000,status=yes,toolbar=no,menubar=no,location=no");'> >>> <div class="dc">Editor</div></button> >>> <button dojoType="button" onclick="action_test()"> <div >>> class="dc">Fenster 2</div></button> >>> <button dojoType="button" onclick="action_inhalt()"> <div >>> class="dc">Inhalt</div></button> >>> <button dojoType="button" onclick="action_inhalt2()"> <div >>> class="dc">ext.Inhalt</div></button> >>> </div> >>> <br clear=both> >>> >>> </div> >>> >>> <div dojoType="ContentPane" layoutAlign="top" style="background-color: >>> #eeeeee; height: 40px; margin: 5px;" executeScripts="true"> >>> {cTMessage} >>> </div> >>> >>> >>> <div dojoType="ContentPane" layoutAlign="bottom" >>> style="background-color: #eeeeee; height: 20px; margin: 5px;" >>> executeScripts="true"> >>> {cTMessage} >>> </div> >>> >>> <div dojoType="ContentPane" id="mainframe" layoutAlign="client" >>> style="background-color: #eeeeee; padding: 10px; margin: 5px;" >>> executeScripts="true"> >>> <div id="inhalt"> >>> {cKundeninfo}<br> >>> {cHTML} >>> >>> </div> >>> >>> >>> </div> >>> >>> </div> >>> </body> >>> </HTML> >>> >>> >>> <script type="text/javascript"> >>> function action_test() >>> { >>> dlg1 = dojo.widget.byId("umsatz"); >>> dlg1.show(); >>> } <!-- Activate cloak >>> </SCRIPT> >>> >>> >>> >>> <script type="text/javascript"> >>> function action_inhalt(){ >>> dojo.io.bind({ >>> url: '../rep/export.html', >>> handler: function(type,data,evt) >>> { >>> if (type == 'error'){ alert('Fehler beim einlesen des Frames!')} >>> else{ >>> dojo.byId('mainframe').innerHTML = data} >>> } >>> }); >>> } >>> </SCRIPT> >>> >>> >>> <script type="text/javascript"> >>> function action_inhalt2(){ >>> dojo.io.bind({ >>> url: 'http://localhost:81?TESTINHALT', >>> handler: function(type,data,evt) >>> { >>> if (type == 'error'){ >>> alert('Fehler beim einlesen des MainFrames!') >>> }else{ >>> dojo.byId('mainframe').innerHTML = data} >>> } >>> }); >>> } >>> </SCRIPT> >>> >>> >>> >> >> > > |