Javascript操作img解决网站提交数据异常问题

本文和大家重点讨论一下使用Javascript巧妙操作img做网站异常提交数据处理,通过两步就可以实现表单提交数据到服务器A,如果服务器A访问不了就提交到服务器B功能,具体内容请看下文详细介绍。

使用Javascript巧妙操作img做网站异常提交数据处理

本文要做的功能效果如下:

表单提交数据到服务器A,如果服务器A访问不了就提交到服务器B

要使用JS实现上面的所讲功能,要考虑跨域问题,有使用过ajax的xmlhttp方法检测远程文件不存在返回404的方案,这种方案在测试时由于ajax存在跨域问题,所以就不采用了,也使用过img的onerror与onload事件这种方案来处理,但是这种方案会造成提交表单IE会弹窗,浏览器又拦截了弹窗,所以又不采用此方案,哪怎么办呢?搞得挺久,最终还是利用js操作img来处理完成。
也许说了这么多,你还看不懂我所表达的意思,暂不管这些,下面看代码你就清楚了。

第1步、创建一个test.htm文件,内容如下:

Code

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

第2步:创建getMessage.js文件,内容如下:

Code

 
  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("TmpSms足球平台出租Img").width;
  15. document.body.removeChild(objImg);
  16. if(imgWidth=="210")//如果图片存在,
  17. 就可以获取到宽度等于预定值,默认接收数据的服务器A的页面
  18. {
  19. objfrm.action="http://www.xueit.com/testGet.aspx";
  20. }
  21. else//图片不存在,另一台接收数据的服务器B的页面
  22. {
  23. objfrm.action="http://demo.xueit.com/testGet.aspx";
  24. }
  25. //下面是表单的属性
  26. objfrm.id="TmpForm";
  27. objfrm.name="TmpForm";
  28. objfrm.target="_blank";
  29. objfrm.method="post";
  30. objfrm.style.display="none";
  31. objsendtype.type="hidden";
  32. objsendtype.name="SendType";
  33. objsendtype.value=Utf2Gb(sendtype);
  34. objtitle.type="hidden";
  35. objtitle.name="title";
  36. objtitle.value=Utf2Gb(title);
  37. //附加
  38. objfrm.appendChild(objsendtype);
  39. objfrm.appendChild(objtitle);
  40. //表单提交
  41. document.body.appendChild(objfrm);
  42. objfrm.submit();
  43. document.body.removeChild(objfrm);
  44. //clearobj
  45. objtitle=null;
  46. objsendtype=null;
  47. objfrm=null;
  48. }
  49. //处理编码函数
  50. functionUtf2Gb(str)
  51. {
  52. if(str!=null&&str!="")
  53. str=escape(str);
  54. returnstr;
  55. }

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

您可能感兴趣的文章:
大部分人没用过的JS页面模板化_0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值