jsonp的小兑现
jsonp的小实现
跨服务器传值,jsonp的基本实现,在不能共享cookie时可以使用;
跨服务器传值首先用cookie,用不了再用jsonp;
在java应用端点击论坛后跳到论坛并自动登录;
1点击时跳到gotobbs.jsp设置cookie,然后再跳转;此为准备数据,不是jsonp;
2 在php应用的登录页login_simple或footer.html中加如下js:
<script type="text/javascript"> function backlogin(result){ if(login==1){ // alert(result.name); // alert(result.pwd); if(result.name!=''&&result.pwd!=''){ if($('ls_username')){ $('ls_username').value=result.name; $('ls_password').value=result.pwd; $('lsform').submit(); } } } } </script>下面是最重要的一句
<script type="text/javascript"src="http://localhost:8080/fss/page/jsonp/getCookie.jsp?callback=backlogin"></script>说明:login=1,原是为区分是否退出的,不重要,可无;最重要的是上边这一句,带src的,用请求动态生成js语句(也就是拼字符串),此语句可以调用backlogin函数,参数是动态生成的json,因此有很大的灵活性;json数据来自cookie,也可以来自其它;此script+src也可以动态生成并追加至文档。
3 getCookie.jsp
<% String name = ""; String pwd = ""; Cookie[] cookies = request.getCookies(); if (null == cookies) { return; } for (Cookie c : cookies) { if ("fss_name".equals(c.getName())) { name = c.getValue(); } if ("fss_sss".equals(c.getName())) { pwd = c.getValue(); } } %> <% String callback = request.getParameter("callback"); out.print(callback + "({ name:'" + name + "',pwd:'" + pwd + "'});"); out.print(callback); out.flush(); %>