angularjs $http实现form表单提交示例


Posted in Javascript onJune 09, 2017

需求:请求第三方后台接口返回一段html字符串如下,由前端去实现form表单的POST提交,

说明:form表单submit()实现自动提交input标签hidden,注意script代码中的document.redirect.submit();

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
  <form name="redirect" action="http://form_process.php" method="POST">
    <input type="hidden" name="aaa" value="aaa_value">
    <input type="hidden" name="bbb" value="bbb_value">
  </form>
  <script type="text/javascript">
    document.redirect.submit();
  </script>
</body>
</html>

为了执行上一段字符串html代码,用到了iframe标签HTML5 的新属性--srcdoc

HTML <iframe> 标签的 srcdoc 属性

<iframe srcdoc="HTML_code">

example:

<iframe srcdoc="<p>Hello world!</p><script>alert(123);</script>" src="demo_iframe_srcdoc.htm"></iframe>

问题来了

form表单submit()提交后,不能知道表单提交完成的状态,因为从流程上考虑,需要判断表单提交成功、失败、网络无连接等状态,用submit()提交,获取不了这些状态。

解决步骤如下:

1、通过正则表达式提取表单中的method、action、和input表单的name、value的值,得到

var formData = {
 method: 'POST',
 url: 'http://form_process.php',
 data: {aaa:'aaa_value',bbb:'bbb_value'}
}

2、发送ajax请求

$http({
 method : formData.method,
 url :formData.url,
 data : $httpParamSerializerJQLike(formData.data), // pass in data as strings
 headers : { 'Content-Type': 'application/x-www-form-urlencoded' } // set the headers so angular passing info as form data (not request payload)
 })
 .success(function(data) {
  console.log(data);//返回html字符串
})
.error(function(error) {
  console.log(error);
});

有两个比较关键的地方:

1、$http参数data的值需要用$httpParamSerializerJQLike处理

2、加上headers : { 'Content-Type': 'application/x-www-form-urlencoded' }

如果不做上面两个处理,请求也能成功(状态返回:200),只是不能在成功回调中拿到想要的response结果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
Nov 30 Javascript
jquery插件制作 手风琴Panel效果实现
Aug 17 Javascript
jQuery动态修改超链接地址的方法
Feb 13 Javascript
基于Css3和JQuery实现打字机效果
Aug 11 Javascript
JS实现不规则TAB选项卡效果代码
Sep 16 Javascript
JS常用加密编码与算法实例总结
Dec 22 Javascript
bootstrap是什么_动力节点Java学院整理
Jul 14 Javascript
详解vue-cli 构建Vue项目遇到的坑
Aug 30 Javascript
Vue仿手机qq的实例代码(demo)
Sep 08 Javascript
vue项目中axios请求网络接口封装的示例代码
Dec 18 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
Apr 17 Javascript
为什么node.js不适合大型项目
Apr 28 Javascript
JavaScript设计模式之单例模式详解
Jun 09 #Javascript
Bootstrap Table使用整理(四)之工具栏
Jun 09 #Javascript
JavaScript设计模式之策略模式详解
Jun 09 #Javascript
Bootstrap Table使用整理(三)
Jun 09 #Javascript
Bootstrap Table使用整理(二)
Jun 09 #Javascript
Bootstrap Table使用整理(一)
Jun 09 #Javascript
Bootstrap Table使用整理(五)之分页组合查询
Jun 09 #Javascript
You might like
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
CI框架附属类用法分析
2018/12/26 PHP
破解Session cookie的方法
2006/07/28 Javascript
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
jQuery实现复制到粘贴板功能
2017/02/11 Javascript
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
2018/08/31 Javascript
代码分析vue中如何配置less
2018/09/28 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
Python采用raw_input读取输入值的方法
2014/08/18 Python
JSON Web Tokens的实现原理
2017/04/02 Python
Python人脸识别初探
2017/12/21 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
Python检查ping终端的方法
2019/01/26 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
Django框架视图介绍与使用详解
2019/07/18 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
Python用K-means聚类算法进行客户分群的实现
2020/08/23 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
优秀应届生推荐信
2013/11/09 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
学习两会精神心得范文
2014/03/17 职场文书
关于运动会的口号
2014/06/07 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
2014年个人委托书范本
2014/10/13 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
js基础语法与maven项目配置教程案例
2021/07/15 Javascript