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实现划词标记+划词搜索功能
Mar 06 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
Apr 14 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
Jul 25 Javascript
JS生成和下载二维码的代码
Dec 07 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
Dec 21 Javascript
JavaScript数据结构之链表的实现
Mar 19 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
May 05 jQuery
使用Node.js实现RESTful API的示例
Aug 01 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
Oct 27 Javascript
Vue中的Vux配置指南
Dec 08 Javascript
浅谈Vue为什么不能检测数组变动
Oct 14 Javascript
node后端服务保活的实现
Nov 10 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树的代码,可以嵌套任意层
2006/10/09 PHP
基于php 随机数的深入理解
2013/06/05 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
原创javascript小游戏实现代码
2010/08/19 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
jQuery下的动画处理总结
2013/10/10 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
jquery+css3打造一款ajax分页插件(自写)
2014/06/18 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
2015/04/15 Javascript
究竟什么是Node.js?Node.js有什么好处?
2015/05/29 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
JavaScript实现cookie的写入、读取、删除功能
2015/11/05 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
JavaScript跨域调用基于JSON的RESTful API
2016/07/09 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
Python程序设计入门(2)变量类型简介
2014/06/16 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
基于python进行抽样分布描述及实践详解
2019/09/02 Python
Win10下python 2.7与python 3.7双环境安装教程图解
2019/10/12 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
消防先进事迹材料
2014/02/10 职场文书
老兵退伍感言
2015/08/03 职场文书
幼儿园保育员随笔
2015/08/14 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle