视图显示表格中的用户列表。单击鼠标选择一个用户(行)。 JavaScript获取用户的信息和Ajax或调用控制器。 Controller将数据保存到会话并呈现视图。 Controller将数据存储在会话中,但从不呈现视图。没有记录错误。 任何帮助表示赞赏。我花了将近一个星期而无处可去。 以下是视图和控制器摘录。
function getRowDataFromTable(_row) { //get data of selected row
/*input argument _row is the row number starting at 0 | columns are fixed (5 cols) start at 1
r0c1 r0c2 r0c3 r0c4 r0c5 r1c1 r1c2 r1c3 r1c4 r1c5 ........ rNc1 rNc2 rNc3 rNc4 rNc5*/
var _id=document.getElementById("r"+_row+"c1").innerHTML;
var _firtsname=document.getElementById("r"+_row+"c2").innerHTML;
var _lastname=document.getElementById("r"+_row+"c3").innerHTML;
var _kname=document.getElementById("r"+_row+"c4").innerHTML;
var _email=document.getElementById("r"+_row+"c5").innerHTML;
var _govtemp=document.getElementById("r"+_row+"c6").innerHTML;
console.log("userid: " + _id);
var data = {}; data.userid=_id; data.firstname=varToString(_firtsname); data.lastname=varToString(_lastname);//JS object
console.log("data = {}: " + data.userid + " : " + data.firstname + " : " + data.lastname + " : ");
invokeController(data);
}
function invokeController(data){
$.ajax({
url:'${g.createLink( controller:'SummaryOfProjectWithPL', action:'summarize_withPL')}',
data: JSON.stringify(data),
type: 'post', //'get'
contentType: 'application/json; charset=utf-8',
dataType: 'json'
});
}
.......
class SummaryOfProjectWithPLController { static defaultAction =" summarize_withPL" ..... def summarize_withPL(){
println('..... SummaryOfProjectController.summarize_withPL() [to select/change Project Leader] ')
def userID_PL=jsonObj.userid; def userFirstName_PL=jsonObj.firstname; def userLastName_PL=jsonObj.lastname
//update scoped session data by adding these to session
userID_PL=session.userID_PL; userFirstName_PL=session.userFirstName_PL; userLastName_PL=session.userLastName_PL
println(' session data ' + session.userID_PL + ' | '+ session.userFirstName_PL + ' | '+ session.userLastName_PL)
render (view:'/newproject/summaryOfProject.gsp',
model: [userFirstName: session.userFirstName, userLastName: session.userLastName, userID: session.userID ,
userID_PL: session.userID_PL, userFirstName_PL: session.userFirstName_PL, userLastName_PL: session.userLastName_PL ])
}
....
答案 0 :(得分:0)
因为您正在使用AJAX,summaryOfProject.gsp
视图呈现到AJAX响应,而不是通知浏览器重定向到该页面。如果您的AJAX请求成功,您将在回调处理程序的msg变量中看到summaryOfProject.gsp
的HTML呈现。作为测试,您可以将其写入javascript控制台进行确认。
基本上,你想要实现的并不能完全修复AJAX模型。什么适合这样的过程:
这意味着整个交易仍然在同一页面上。这就是AJAX的优点所在。有关如何在Grails中执行此操作的示例,请参阅Grails Ajax table - how to implement?