用户名称: 用户密码:
网站建设快速入口 | 宏蓝主页 | 加入收藏

广州网站建设|网站制作公司|网页设计论坛--广州宏蓝科技公司官方论坛网站建设专栏网站建设专题img做网站异常提交问题Javascript巧妙解决
    
 
img做网站异常提交问题Javascript巧妙解决
发起人:macroblue  回复数:0  浏览数:5635  最后更新:2011/11/20 18:59:11 by macroblue
分享到: 微信 更多

选择查看  帖子排序:
2011/11/20 18:59:11
macroblue





师长

角  色:版主
发 帖 数:8923
经 验 值:17676
注册时间:2009/7/23
联系 收藏 编辑 删除
img做网站异常提交问题Javascript巧妙解决

本文向大家描述一下使用javascript巧妙操作img做网站异常提交,表如果要实现单提交数据到服务器A,如果服务器A访问不了就提交到服务器B,利用js操作img来处理完成是个不错的选择。

<div id=artibody><div id=content class=content><div class=guanggao><!-- Error --></div>

本文向大家描述一下使用javascript巧妙操作img做网站异常提交,表如果要实现单提交数据到服务器A,如果服务器A访问不了就提交到服务器B,利用js操作img来处理完成是个不错的选择。

使用javascript巧妙操作img做网站异常提交

如果要实现表单提交数据到服务器A,如果服务器A访问不了就提交到服务器B,使用JS实现上面的所讲功能,要考虑跨域问题,有使用过ajax的xmlhttp方法检测远程文件不存在返回404的方案,这种方案在测试时由于ajax存在跨域问题,所以就不采用了,也使用过img的onerror与onload事件这种方案来处理,但是这种方案会造成提交表单IE会弹窗,浏览器又拦截了弹窗,所以又不采用此方案,哪怎么办呢?搞得挺久,最终还是利用js操作img来处理完成,下面是具体步骤。

第1步、创建一个test.htm文件

内容如下:

  1. <html>
  2. <scriptsrcscriptsrc="getMessage.js"></script>
  3. <body>
  4. <formnameformname="mfrm">
  5. <inputidinputid="SendType"
  6. type="hidden"value="s129"name="SendType"/>
  7. <inputidinputid="title"name="title"/>
  8. <inputonClickinputonClick="returngetMessage(this.form);
  9. "type="button"name="imageField"/>
  10. </form>
  11. </body>
  12. </html>

第2步:创建getMessage.js文件

内容如下:

  1. functiongetMessage(frm){
  2. varsendtype=frm.SendType;
  3. vartitle=frm.title;
  4. //创建模拟form表单
  5. varobjfrm=document.createElement("form");
  6. varobjsendtype=document.createElement("input");
  7. varobjtitle=document.createElement("input");
  8. //利用操作img来处理目标接收数据的服务器页面
  9. varobjImg=document.createElement("img");
  10. objImg.id="TmpSmsImg";
  11. objImg.src="http://www.xueit.com/images/logo.gif";
  12. //默认服务器A图片
  13. document.body.appendChild(objImg);
  14. varimgWidth=document.getElementById("TmpSmsImg").width;
  15. document.body.removeChild(objImg);
  16. if(imgWidth=="210")
  17. //如果图片存在,就可以获取到宽度等于预定值,
  18. 默认接收数据的服务器A的页面
  19. {
  20. objfrm.action="http://www.xueit.com/testGet.aspx";
  21. }
  22. else//图片不存在,另一台接收数据的服务器B的页面
  23. {
  24. objfrm.action="http://demo.xueit.com/testGet.aspx";
  25. }

下面是表单的属性

  1. objfrm.id="TmpForm";
  2. objfrm.name="TmpForm";
  3. objfrm.target="_blank";
  4. objfrm.method="post";
  5. objfrm.style.display="none";
  6. objsendtype.type="hidden";
  7. objsendtype.name="SendType";
  8. objsendtype.value=Utf2Gb(sendtype);
  9. objtitle.type="hidden";
  10. objtitle.name="title";
  11. objtitle.value=Utf2Gb(title);
  12. //附加
  13. objfrm.appendChild(objsendtype);
  14. objfrm.appendChild(objtitle);
  15. //表单提交
  16. document.body.appendChild(objfrm);
  17. objfrm.submit();
  18. document.body.removeChild(objfrm);
  19. //clearobj
  20. objtitle=null;
  21. objsendtype=null;
  22. objfrm=null;
  23. }
  24. //处理编码函数
  25. functionUtf2Gb(str)
  26. {
  27. if(str!=null&&str!="")
  28. str=escape(str);
  29. returnstr;
  30. }

以上代码主要是利用img图片,如果图片所在服务器正常运行的话,图片会加载到当前页面的body区域中,所以再获取这个img图片的宽度,如果宽度等于你知道的预定值,就代表默认服务器正常,否则代码服务器A不正常,就把数据提交到服务器B处理。
http://webservices.ctocio.com.cn/239/12190739.shtml

</div></div>

标签:做网站,做网站公司


客服热线:020-85562980 客服邮箱:service@macroblue.net
联系地址:广州中山大道89号国家软件产业基地天河软件园华景园区12-S05
版权所有 © 2003-2011    网站建设宏蓝科技Macroblue.NET