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 相关文章推荐
jQuery 常见开发使用技巧总结
Dec 26 Javascript
javascript改变position值实现菜单滚动至顶部后固定
Jan 18 Javascript
js的alert样式如何更改如背景颜色
Jan 22 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
May 28 Javascript
简述AngularJS的控制器的使用
Jun 16 Javascript
jquery实现简洁文件上传表单样式
Nov 02 Javascript
javascript实现省市区三级联动下拉框菜单
Nov 17 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
Mar 01 Javascript
在javaScript中检测数据类型的几种方式小结
Mar 04 Javascript
基于Layui自定义模块的使用方法详解
Sep 14 Javascript
VUEX 数据持久化,刷新后重新获取的例子
Nov 12 Javascript
vue 中的动态传参和query传参操作
Nov 09 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
第五节 克隆 [5]
2006/10/09 PHP
Zend Guard一些常见问题解答
2008/09/11 PHP
防止用户利用PHP代码DOS造成用光网络带宽
2011/03/01 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
2014/01/26 PHP
php程序内部post数据的方法
2015/03/31 PHP
php+ajax实现的点击浏览量加1
2015/04/16 PHP
php实现猴子选大王问题算法实例
2015/04/20 PHP
ajax的hide隐藏问题解决方法
2012/12/11 Javascript
js、jquery图片动画、动态切换示例代码
2014/06/03 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
js基本算法:冒泡排序,二分查找的简单实例
2016/10/08 Javascript
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
2017/06/21 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
微信小程序进入广告实现代码实例
2019/09/19 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
对python 操作solr索引数据的实例详解
2018/12/07 Python
Python中的 enum 模块源码详析
2019/01/09 Python
利用python 下载bilibili视频
2020/11/13 Python
让你相见恨晚的十个Python骚操作
2020/11/18 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
size?瑞典:英国伦敦的球鞋精品店
2018/03/01 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
函数指针的定义是什么
2016/08/14 面试题
历史专业毕业生的自我鉴定
2013/11/15 职场文书
车工岗位职责
2013/11/26 职场文书
宿舍违规检讨书
2014/01/12 职场文书
本科毕业生求职自荐信
2014/02/03 职场文书
小学教师师德反思
2014/02/03 职场文书
入党个人总结范文
2015/03/02 职场文书
2015年库房工作总结
2015/04/30 职场文书
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android