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 相关文章推荐
javascript编程起步(第五课)
Feb 27 Javascript
js正文内容高亮效果的实现方法
Jun 30 Javascript
在ASP.NET中使用JavaScript脚本的方法
Nov 12 Javascript
JavaScript调试技巧之console.log()详解
Mar 19 Javascript
JavaScript模块随意拖动示例代码
May 27 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
Sep 01 Javascript
JS控制弹出新页面窗口位置和大小的方法
Mar 02 Javascript
js实现最短的XML格式化工具实例
Mar 12 Javascript
js实现tab切换效果
Feb 16 Javascript
Webpack如何引入bootstrap的方法
Jun 17 Javascript
Vue使用mixin分发组件的可复用功能
Sep 01 Javascript
element-ui 弹窗组件封装的步骤
Jan 22 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和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
js取float型小数点后两位数的方法
2014/01/18 Javascript
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
Javascript removeChild()删除节点及删除子节点的方法
2015/12/27 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
Python 将pdf转成图片的方法
2018/04/23 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
Python之循环结构
2019/01/15 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
python实现单链表的方法示例
2019/09/03 Python
Python 列表的清空方式
2020/01/13 Python
python如何快速生成时间戳
2020/07/21 Python
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
婚礼证婚人证婚词
2014/01/08 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
无工作证明怎么写
2015/06/15 职场文书
《卖火柴的小女孩》教学反思
2016/02/19 职场文书
JavaScript选择器函数querySelector和querySelectorAll
2021/11/27 Javascript
Java 关于String字符串原理上的问题
2022/04/07 Java/Android