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 相关文章推荐
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
Dec 31 Javascript
JavaScript实战之带收放动画效果的导航菜单
Aug 16 Javascript
node.js学习之交互式解释器REPL详解
Dec 08 Javascript
JavaScript自定义分页样式
Jan 17 Javascript
jQuery插件echarts去掉垂直网格线用法示例
Mar 03 Javascript
深入浅析ES6 Class 中的 super 关键字
Oct 20 Javascript
angular写一个列表的选择全选交互组件的示例
Jan 22 Javascript
vue实现自定义多选与单选的答题功能
Jul 05 Javascript
微信小程序画布圆形进度条显示效果
Nov 17 Javascript
webpack4简单入门实例
Sep 06 Javascript
ES6 Promise对象的含义和基本用法分析
Jun 14 Javascript
layui table去掉右侧滑动条的实现方法
Sep 05 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蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
php短域名转换为实际域名函数
2011/01/17 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
JQuery 学习技巧总结
2010/05/21 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
javascript实现简单的贪吃蛇游戏
2015/03/31 Javascript
jQuery EasyUI Dialog拖不下来如何解决
2015/09/28 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
Vue实现PopupWindow组件详解
2018/04/28 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
python自动化测试实例解析
2014/09/28 Python
python实现清屏的方法
2015/04/30 Python
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
深入解读CSS3中transform变换模型的渲染
2016/05/27 HTML / CSS
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
荷兰包包购物网站:The Little Green Bag
2018/03/17 全球购物
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
幼儿园五一活动方案
2014/02/07 职场文书
项目建议书格式
2014/03/12 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
IT工程师岗位职责
2014/07/04 职场文书
小学假期安全广播稿
2014/09/28 职场文书
Python绘画好看的星空图
2022/03/17 Python
讲解MySQL增删改操作
2022/05/06 MySQL