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 相关文章推荐
js 数据类型转换总结笔记
Jan 17 Javascript
JS实现切换标签页效果实例代码
Nov 01 Javascript
jQuery制作可自定义大小的拼图游戏
Mar 30 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
Jun 24 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
Nov 01 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
Dec 14 Javascript
Popup弹出框添加数据实现方法
Oct 27 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
Aug 10 Javascript
详解ES7 Decorator 入门解析
Feb 18 Javascript
React传值 组件传值 之间的关系详解
Aug 26 Javascript
js中forEach,for in,for of循环的用法示例小结
Mar 14 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
Mar 17 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和ACCESS写聊天室(五)
2006/10/09 PHP
介绍几个array库的新函数 php
2006/12/29 PHP
实用函数2
2007/11/08 PHP
php实现的简单日志写入函数
2015/03/31 PHP
php实现无限级分类查询(递归、非递归)
2016/03/10 PHP
javascript 全角转换实现代码
2009/07/17 Javascript
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
2016/03/02 Javascript
p5.js入门教程和基本形状绘制
2018/03/15 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
vue 循环加载数据并获取第一条记录的方法
2018/09/26 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
python修改注册表终止360进程实例
2014/10/13 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
python获取地震信息 微信实时推送
2019/06/18 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
python mock测试的示例
2020/10/19 Python
Python经纬度坐标转换为距离及角度的实现
2020/11/01 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
医科大学生毕业的自我评价分享
2013/11/12 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
2015年考研复习计划
2015/01/19 职场文书
财务稽核岗位职责
2015/04/13 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书