我认为,您需要调整服务器端代码以处理Ajax发布请求以发送邮件并dojo.xhrPost在用户单击按钮时使用方法。您的JS代码可能如下所示:
function sendMailHandler(evt, item) { dojo.xhrPost({ url: '/2_8_2012/jsp/SendMailReminder.jsp', content: {’SendMail’: item }, error: function() {alert('Sent failure'); }, load: function(result) {alert('Email sent with result: ' + result); } }); dojo.stopEvent(evt); } function sendmail(item) { return '<button onclick=’sendMailHandler(arguments[0], '' + item + '')’>Send Mail</button>'; }
请注意,dojo.stopEvent(evt);in sendMailHandler用于停止事件冒泡并防止RowClick引发事件。
也dojo.xhrGet有类似的语法来执行ajax GET请求,您可以使用它代替jQuery$.get。您也可以在我的示例中使用,dojo.xhrGet而不是使用dojo.xhrPost它,因为它有可能无需调整就可以与您的后端一起使用,但是POST(或ajax表单提交)在语义上会更正确。
关于“试图注册一个id =“ something”,您应该调整代码以避免ID重复,或者显示导致错误的代码。
解决方法我有一个dojox.grid.DataGrid。在这种情况下,将显示一组值,并填充最后两列,buttons这些列是根据使用中的formatter属性从数据库检索的数据动态创建的gridStruture。现在,我的网格状况良好。按钮也很好。我现在需要做的是,当我单击该按钮单击事件上的特定按钮时,我将其重定向到一个新的URL,该URL具有作为查询字符串参数的特定值(A)。而且我不希望刷新我的页面。就像单击按钮一样,它在其他JSP页面上执行操作并显示消息alert('Actionis being performed')。
我为数据网格编码的Java脚本代码::
<script type='text/javascript'>function getInfoFromServer(){$.get('http://localhost:8080/2_8_2012/jsp/GetJson.jsp?random=' + new Date().getTime(),function (result) {success:postToPage(result),alert(’Load was performed.’); },'json'); } function postToPage(data){ alert(data);var storedata = {identifier:'ActID',items: data}; alert(storedata); var store1 = new dojo.data.ItemFileWriteStore({data: storedata}) ; var gridStructure =[[ { field: 'ActID',name: 'Activity ID',classes:'firstName' },{ field: 'Assigned To',name: 'Assigned To',classes: 'firstName' },{ field: 'Activity Type',name: 'Activity Type',{ field: 'Status',name: 'Status',{ field: 'Assigned Date',name: 'Assigned Date',{ field: 'Assigned Time',name: 'Assigned Time',{ field: 'Email',name: 'Send Mail',formatter: sendmail,classes: 'firstName' },{ field: 'ActID',name: 'Delete',formatter: deleteact,classes: 'firstName' } ] ]; //var grid = dijit.byId('gridDiv'); //grid.setStore(store1); var grid = new dojox.grid.DataGrid({store: store1,structure: gridStructure,rowSelector: ’30px’,selectionMode: 'single',autoHeight:true,columnReordering:true},’gridDiv’); grid.startup(); dojo.connect(grid,'onRowClick',grid,function(){var items = grid.selection.getSelected();dojo.forEach(items,function(item){ var v = grid.store.getValue(item,'ActID'); getdetailsfordialog(v); function showDialog() {dojo.require(’dijit.Tooltip’);dijit.byId('terms').show(); } showDialog(); },grid); });}function sendmail(item) { alert(item); return '<button onclick=http://localhost:8080/2_8_2012/jsp/SendMailReminder.jsp?Send Mail='+item+'’'>Send Mail</button>'; }function deleteact(item) { alert(item); return '<button onclick=http://localhost:8080/2_8_2012/jsp/DeleteActivity.jsp?Activity ID='+item+'’'>Delete</button>'; }</script>
我正在使用$.get调用获取网格数据。在上面的代码字段中Email,ActID实际上是在每次调用函数sendmail和时都在创建的按钮。显示网格。同样,这两个函数中的值都将正确显示,即分别存在相应的值。喜欢在我收到并在得到现在我想,在一个特定的(按钮栏)我的网页deleteact``formatter``alert(item)``alert(item)``Delete``ActID``alert(item)``sendmail``'shan@gmail.com'``buttonclick``Sendmail
http://localhost:8080/2_8_2012/jsp/SendMailReminder.jsp?Send Mail='+item+'’
并button click在Delete此页面的列中
http://localhost:8080/2_8_2012/jsp/DeleteActivity.jsp?Activity ID='+item+'’'
用从数据库中检索的项目的值打开。我还应用了一个rowClick事件,这也引起了问题,因为当我单击u按钮时,我的Rowclick事件触发,而不是按钮单击事件。这个怎么做。我想到将点击事件应用于网格上的每个按钮。但是我不知道那里的ID。请帮我这个。谢谢..