</body> <script type="text/javascript" src="${pageContext.request.contextPath}/js/linkUrl.js"></script> </html>
<a href="#" onclick="javascript:linkUrl('${pageContext.request.contextPath}/wap/login/register.jsp?topColumnId=${i_TopColumnID}')"> 注册</a>|
/* * 功能 : 将如"register.jsp?name=a&pwd=a"的链接改成form提交,以达到隐藏表单。 * 使用:将<a href="register.jsp?name=a&pwd=a">注册</a>|替换这 * <a href="#" onclick="linkUrl('register.jsp?name=a&pwd=a')">注册</a>| * */ function linkUrl(allUrl){ var url,queryString,oneArray,twoArray,name,value,turnForm,turnInput; //1 创建form turnForm = document.createElement("form"); document.body.appendChild(turnForm); //2 解析完整url,加入隐藏域 alert(allUrl); url = allUrl.substring(0,allUrl.indexOf("?")); queryString = allUrl.substr(allUrl.indexOf("?")+1); // alert(url); // alert(queryString); oneArray = queryString.split("&"); for(var i=0;i<oneArray.length;i++){ twoArray = oneArray[i].split("="); name = twoArray[0]; value = twoArray[1]; //alert(name); //alert(value); turnInput = document.createElement("input"); turnInput.type = "hidden"; turnForm.appendChild(turnInput); turnInput.name = name; turnInput.value = value; } //3 提交 turnForm.action=url; turnForm.method = "post"; turnForm.submit(); }
结果要加上 13行 alert(allUrl);
的那一句才能正常执行,否则就报找不到action的错误。 太神奇了。求教。
加了个alert出现效果,说明alert延长了时间。
不加alert不能出现效果说明DOM组装还没有完成。
没怎么看你的js 你搜一下是不是有id="linkUrl"也就是id名和你onclikk方法名一样了。如果没有将你a标签里的#换乘JavaScript:void(0);
没仔细看代码,不过这是一个典型的异步调用错误。
因为你在ajax返回之前进行了后一步的操作(如操作DOM)。
只要将所有的操作放到ajax的callback中去就可以了...