HTML5 jquery使用

最近在学HTML5和jquery,做一个小网站,遇到两个问题:
1.前后台数据传输我用的jquery ajax框架,传输方式用json,js代码如下:
[code="js"]
$('input[name=submit]').click(function() {
var userInfo = "userName=" + $('input[name=userName]').fieldValue() + "&password=" + $('input[name=password]').val();//.fieldValue() and .val() can both get the value
var options = {
url:'../doLogin.do',
type:'POST',
dataType:'json',
data:userInfo,
success: loginResponse
};
$.ajax(options);
});
function loginResponse(result) {
var loginRsl = eval(result);
if (loginRsl.loginResult == "登录成功") {
window.location = "search.html";
} else {
alert(loginRsl.loginResult);
}
}
[/code]
传输已经成功了,但是页面的跳转怎么实现?比如我login成功后希望跳转到我的主页去,这个怎么实现?普通的action的话,是通过mapping.findFarword()来做的。上网查了下,通过window.location = "search.html";实现了跳转,但是问题又来了,这时候我希望在search页面显示后台传回来的数据loginRsl.loginResult,这好像是取不到的,只能在login.html页面读取到这个值。

2.html5是静态语言,我现在需要动态实现画面,最常用的,像jsp一样,我需要一个for循环来根据后台返回的记录数动态的生成一个table,这样的又改如何实现,html里面不能写java代码吧。

2个回答

1、对于loginRsl.loginResult的值,你在跳转到search.html的时候就已经确定了:
if (loginRsl.loginResult == "登录成功") {

window.location = "search.html";

}
所以就可以直接在search.html页面用"登录成功"。
如果不想这么用,那也可以把loginRsl.loginResult的值作为参数传递给search.html
如: window.location = "search.html?r="+loginRsl.loginResult;

2、通过jquery ajax调用后台,返回记录数,然后在success回调函数里进行拼装

记录,最后插入到的中即可,例子:
[code="java"]









用户类型 用户号码 用户名称 创建时间
[/code]
然后ajax调用后台返回记录,拼装并插入到tbodyContent中,代码如下:
[code="java"]success:function(data){
var users = data.userList;
if(users.length>0){
for(var i=0;i var wrapString = ''
+''+(users[i].userType=='0'? '学生':'教师')+''
+''+users[i].userNo+''
+''+users[i].userName+''
+''+(users[i].createDate? users[i].createDate.replace("T"," "):"")+''
+'';
$("#tbodyContent").append(wrapString);
}[/code]
iteye_7482
iteye_7482 差不多搞定了,感谢你的回答
大约 8 年之前 回复
iteye_7482
iteye_7482 现在就是写在一个页面的,只是想知道如果必须是不同页面的话该怎么实现数据的共用。记得毕业设计是用ajax和js做的,那时候一个jsp页面没写几行代码,对应的js文件却又上千行,当时觉得都靠DOM生成页面成就感挺高,现在觉得有点极端了,完全不用js或者完全靠js写页面都不好,应该jsp代码和js结合起来找个平衡点,所以也不太愿意一个页面的大部分内容都用js去生成。
大约 8 年之前 回复
iteye_7115
iteye_7115 你在searchresult页面通过window.location可以得到地址:searchresult.html?r=abc;然后通过字符解析或者通过正则表示式将里面的变量与变量值给提取出来就行
大约 8 年之前 回复
iteye_7115
iteye_7115 2、对于你第二个疑问,我表示笑了,js都用了这么多年,ajax技术都宣传了很多年,Extjs jQuery等这些js框架也风行这么久,这些里面所用到的DOM处理都不知道被人家用过多少次,而且人家的页面还有更复杂的都没觉得复杂,就因为一句容易写错就不用??你如果担心自己组织不好,那我推荐你直接使用ExtJs这种直接的RIA开发框架,免去你对界面组织的烦恼
大约 8 年之前 回复
iteye_7115
iteye_7115 1、那你干嘛不直接把search页面与searchresult.html做成一个页面呢,通过ajax技术处理下;不知道你能否理解意思,也就是search查询与结果显示在同一个页面,只不过开始的时候结果页被屏蔽的,等到查询出结果后再显示出结果页,并组织显示样式
大约 8 年之前 回复
iteye_7482
iteye_7482 还有,在searchresult.js里面,如何读取window.location = "searchresult.html?r="+searchrst;传过来的这个r呢?
大约 8 年之前 回复
iteye_7482
iteye_7482 1.window.location = "search.html?r="+loginRsl.loginResult;这种方式能不能传递js对象?比如说search页面上我查询一个单词test,后台将这个单词的查询结果(里面可能包括很多项目,id,word,词性,例句等等)做成json对象searchrst返回给前台search.js,search.js里面通过window.location = "searchresult.html?r="+searchrst;这样的方式将这个对象直接传给searchresult.html页面使用。 2.通过js动态生成页面的方式想过了,但是个人觉得,如果要添加的页面元素节点很多,层次比较复杂的话,用js来动态生成有点复杂,而且很容易写错。除了用js写以外,还有其他方法实现吗?难道说目前所有html5写的网站的动态数据都是通过js显示到页面的?
大约 8 年之前 回复

问题1不知道怎么弄,
问题2,最近在弄jQuery的ajax load,可以动态加载页面内容,也就是你可以使用jstl标签在JSP页面直接循环好了以后,通过ajax load这个页面的内容,不用在js里面拼接,这点比较方便

iteye_7482
iteye_7482 谢谢你的建议,指了一个方向给我,以后有机会摸索一下,目前决定采用js的dom来写页面。
大约 8 年之前 回复
iteye_7482
iteye_7482 你是说html5和jsp结合起来,动态数据在jsp里面生成好,然后将这个jsp页面的html代码ajax load到html5的页面里?
大约 8 年之前 回复
立即提问