|
View:
New views
3 Messages
—
Rating Filter:
Alert me
|
|
|
Calling ATG Form Handler using JQuery.I have a unique problem in which i have to call a ATG GenericFormHandler, I am currently calling a servlet using jquery but I have to call Form handler using Jquery(ajax ). The problem with form handler is it is called by nucleus. But I have to pass request to form handler only. The code is as below for submit using servlet it has to be modified to use formhandler:-
<%@ taglib uri="http://www.atg.com/taglibs/daf/dspjspTaglib1_0" prefix="dsp" %> <%@ page import="javax.naming.*"%> <%@ page import="javax.sql.*"%> <dsp:page> <dsp:importbean bean="/com/epson/search/PredictiveSearchFormHandler"/> <dsp:importbean bean="/atg/dynamo/Configuration"/> <html> <head> <script type="text/javascript" src="jquery-1.2.1.min.js"></script> <script type="text/javascript"> var isIE; var completeTable; var completeField; var autorow; var req; function getElementY(element){ var targetTop = 0; if (element.offsetParent) { while (element.offsetParent) { targetTop += element.offsetTop; element = element.offsetParent; } } else if (element.y) { targetTop += element.y; } return targetTop; } function init() { completeField = document.getElementById("search"); var menu = document.getElementById("auto-row"); autorow = document.getElementById("menu-popup"); autorow.style.top = getElementY(menu) + "px"; completeTable = document.getElementById("completeTable"); completeTable.setAttribute("bordercolor", "white"); initRequest(); } function initRequest() { if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else if (window.ActiveXObject) { isIE = true; return new ActiveXObject("Microsoft.XMLHTTP"); } } // Your code goes here function makeCall(a) { clearTable() ; if(a.value.length==3 ||a.value.length>3 ) { // alert(a.value); var urlstr="predictiveSearchServlet"; var dataString = 'prodName='+ a.value; $.ajax({ type: "POST", data: dataString, url: urlstr, success: function(msg){ // alert( "Data Retrieved: " + msg ); var myJSONObject = msg; // alert(msg); var obj = eval(myJSONObject); for( i=1;i<obj.length;i++) { appendImage(obj[0][i],obj[1][i]); } }, error: function(msg){ alert( "Error while Querying: "+msg); } }); } } function appendImage(productName,thumbnail) { var row; var nameCell; var imgtdcell; if (isIE) { row = completeTable.insertRow(completeTable.rows.length); nameCell = row.insertCell(0); } else { row = document.createElement("tr"); nameCell = document.createElement("td"); imgtdcell = document.createElement("td"); row.appendChild(imgtdcell); row.appendChild(nameCell); completeTable.appendChild(row); } row.className = "popupRow"; nameCell.setAttribute("bgcolor", "#FFFAFA"); var imgElement = document.createElement("img"); imgElement.setAttribute("src", "http://www.epson.co.uk/news_events/homepage_images/balloon.jpg"); var linkElement = document.createElement("a"); linkElement.className = "popupItem"; linkElement.setAttribute("href", "autocomplete?action=lookup&id=" + productName); linkElement.appendChild(document.createTextNode(productName)); nameCell.appendChild(linkElement); imgtdcell.appendChild(imgElement); } function clearTable() { if (completeTable) { completeTable.setAttribute("bordercolor", "white"); completeTable.setAttribute("border", "0"); completeTable.style.visible = false; for (loop = completeTable.childNodes.length -1; loop >= 0 ; loop--) { completeTable.removeChild(completeTable.childNodes[loop]); } } } </script> </head> <body onload="init()"> jQuery <dsp:form formid ="predictivesearchform" name="searchform" > <table border="0" cellpadding="5" cellspacing="0"> <tr> <td>Product Name:</td> <td> <dsp:input type="text" autocomplete="off" id="search" name="search" onkeyup="makeCall(document.searchform.search);" bean="PredictiveSearchFormHandler.search"/> </td> <td align="left"> <dsp:input type="submit" value="Search" bean="PredictiveSearchFormHandler.submit"/> </td> <tr><td id="auto-row" colspan="2"> <td/></tr> </table> </dsp:form> <div style="position: absolute; top:170px;left:140px" id="menu-popup"> <table id="completeTable" border="1" bordercolor="black" cellpadding="0" cellspacing="0" /> </div> </body> </html> <!--insert into EP_PRELOADED_PRDSRCH_CATALOG values('prod3','Epson DLQ Dot Matrix','en_UK','http://www.epson.co.uk/epsondlqdotmatrix.jpg')--> </dsp:page> |
|
|
Re: Calling ATG Form Handler using JQuery.I found a code in atg knowledge base in which it has been demonstrated to use dojo framework to call a formhandler. There is a specific url thats generated when a form is submited not through ajax. this url can be studied and used to call a formhandler using jquery. I am successful in doing that by studying it.
|
|
|
Re: Calling ATG Form Handler using JQuery.sample code for Calling formhandler using jquery
<%@ taglib uri="/dspTaglib" prefix="dsp" %> <%@ page import="javax.naming.*"%> <%@ page import="javax.sql.*"%> <dsp:page> <dsp:importbean bean="/com/epson/search/PredictiveSearchFormHandler"/> <dsp:importbean bean="/atg/dynamo/Configuration"/> <html> <head> <script type="text/javascript" src="js/jquery-1.2.1.min.js"></script> <script type="text/javascript"> init(); var isIE; var completeTable; var completeField; var autorow; var req; function getElementY(element){ var targetTop = 0; if (element.offsetParent) { while (element.offsetParent) { targetTop += element.offsetTop; element = element.offsetParent; } } else if (element.y) { targetTop += element.y; } return targetTop; } function init() { completeField = document.getElementById("input"); var menu = document.getElementById("auto-row"); autorow = document.getElementById("menu-popup"); autorow.style.top = getElementY(menu) + "px"; completeTable = document.getElementById("completeTable"); completeTable.setAttribute("bordercolor", "white"); initRequest(); } function initRequest() { if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else if (window.ActiveXObject) { isIE = true; return new ActiveXObject("Microsoft.XMLHTTP"); } } // Your code goes here function makeCall(a) { clearTable() ; if(a.value.length==3 ||a.value.length>3 ) { // alert(a.value); var urlstr="predictiveSearch.jsp"; var dataString="_dyncharset=ISO-8859-1&_dynSessConf="+document.searchform._dynSessConf.value+"&input="+document.searchform.input.value+"&_D%3Ainput=+&search=Search&_D%3Asearch=+&/com/epson/search/PredictiveSearchFormHandler.successURL=predictiveSearch.jsp&_D%3A/com/epson/search/PredictiveSearchFormHandler.successURL=+&/com/epson/search/PredictiveSearchFormHandler.errorURL=predictiveSearch.jsp&_D%3A/com/epson/search/PredictiveSearchFormHandler.errorURL=+&/com/epson/search/PredictiveSearchFormHandler.ajaxSuccessURL=json/results.jsp&_D%3A/com/epson/search/PredictiveSearchFormHandler.ajaxSuccessURL=+&/com/epson/search/PredictiveSearchFormHandler.ajaxErrorURL=json/error.jsp&_D%3A/com/epson/search/PredictiveSearchFormHandler.ajaxErrorURL=+&_DARGS=/epson/predictiveSearch.jsp.predictivesearchform"; $.ajax({ type: "GET", data: dataString, url: urlstr, beforeSend: function(xhr) { xhr.setRequestHeader( "ACCEPT", "application/json" ); }, success: function(msg){ // alert( "Data Retrieved: " + msg ); var myJSONObject = msg; alert(msg); var obj = eval(myJSONObject); for( i=0;i<obj.length;i++) { var productlinks = obj[i]['links']; //need to change hardcoded url appendImage(obj[i]['title'],"http://www.epson.com",obj[i]['thumbnail'],productlinks[0]['title'],productlinks[0]['url'],productlinks[1]['title'],productlinks[1]['url']); } }, error: function(msg){ alert( "Error while Querying: "+msg); } }); } } function appendImage(productName,producturl,thumbnail,acctitle,accurl,supporttitle,supporturl) { var row; var nameCell; var imgtdcell; var row1; var row2; if (isIE) { row = completeTable.insertRow(completeTable.rows.length); nameCell = row.insertCell(0); } else { row = document.createElement("tr"); row1 = document.createElement("tr"); row2 = document.createElement("tr"); nameCell = document.createElement("td"); imgtdcell = document.createElement("td"); row.appendChild(imgtdcell); row.appendChild(nameCell); completeTable.appendChild(row); } row.className = "popupRow"; row1.className= "popupRow"; row2.className= "popupRow"; nameCell.setAttribute("bgcolor", "#FFFAFA"); var imgElement = document.createElement("img"); imgElement.setAttribute("src", thumbnail); var linkElement = document.createElement("a"); linkElement.className = "popupItem"; linkElement.setAttribute("href",producturl ); linkElement.appendChild(document.createTextNode(productName)); nameCell.appendChild(linkElement); imgtdcell.appendChild(imgElement); var buytdcell = document.createElement("td"); var buylinkelement = document.createElement("a"); buylinkelement.className = "popupItem"; buylinkelement.setAttribute("href",accurl ); buylinkelement.appendChild(document.createTextNode(acctitle)); buytdcell.appendChild(buylinkelement); var supporttdcell = document.createElement("td"); var supportlinkelement = document.createElement("a"); supportlinkelement.className = "popupItem"; supportlinkelement.setAttribute("href",supporturl ); supportlinkelement.appendChild(document.createTextNode(supporttitle)); supporttdcell.appendChild(supportlinkelement); var dummycell = document.createElement("td"); row1.appendChild(dummycell); row1.appendChild(buytdcell); var dummycell1 = document.createElement("td"); row2.appendChild(dummycell1); row2.appendChild(supporttdcell ); completeTable.appendChild(row1); completeTable.appendChild(row2); } function clearTable() { if (completeTable) { completeTable.setAttribute("bordercolor", "white"); completeTable.setAttribute("border", "0"); completeTable.style.visible = false; for (loop = completeTable.childNodes.length -1; loop >= 0 ; loop--) { completeTable.removeChild(completeTable.childNodes[loop]); } } } </script> </head> <body onload="init()"> jQuery <dsp:form formid ="predictivesearchform" name="searchform" > <table border="0" cellpadding="5" cellspacing="0"> <tr> <td>Product Name:</td> <td> <dsp:input type="text" autocomplete="off" id="input" name="input" onkeyup="makeCall(document.searchform.input);" bean="PredictiveSearchFormHandler.input"/> </td> <td align="left"> <dsp:input type="submit" value="Search" bean="PredictiveSearchFormHandler.search" name="search"/> </td> <dsp:input type="hidden" bean="PredictiveSearchFormHandler.successURL" value="predictiveSearch.jsp" /> <dsp:input type="hidden" bean="PredictiveSearchFormHandler.errorURL" value="predictiveSearch.jsp" /> <dsp:input type="hidden" bean="PredictiveSearchFormHandler.ajaxSuccessURL" value="json/results.jsp" /> <dsp:input type="hidden" bean="PredictiveSearchFormHandler.ajaxErrorURL" value="json/error.jsp" /> <tr><td id="auto-row" colspan="2"> <td/></tr> </table> </dsp:form> <div style="position: absolute; top:170px;left:140px" id="menu-popup"> <table id="completeTable" border="1" bordercolor="black" cellpadding="0" cellspacing="0" /> </div> </body> </html> </dsp:page> |
| Free embeddable forum powered by Nabble | Forum Help |