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 相关文章推荐
让getElementsByName适应IE和firefox的方法
Sep 24 Javascript
jquery 插件实现图片延迟加载效果代码
Feb 06 Javascript
JS在IE和FireFox之间常用函数的区别小结
Mar 12 Javascript
用innerhtml提高页面打开速度的方法
Aug 02 Javascript
js实现精美的银灰色竖排折叠菜单
May 16 Javascript
js实现文字垂直滚动和鼠标悬停效果
Dec 31 Javascript
PHP+jquery+ajax实现分页
Dec 09 Javascript
Vue全家桶实践项目总结(推荐)
Nov 04 Javascript
Vue.js 动态为img的src赋值方法
Mar 14 Javascript
微信小程序自定义联系人弹窗
May 26 Javascript
如何检测JavaScript中的死循环示例详解
Aug 30 Javascript
JavaScript中layim之整合右键菜单的示例代码
Feb 06 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 header()函数使用说明
2008/07/10 PHP
解析CI的AJAX分页 另类实现方法
2013/06/27 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
PHP实现HTML页面静态化的方法
2015/11/04 PHP
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
javascript截取字符串小结
2015/04/28 Javascript
javascript实现dom元素可拖动
2016/03/21 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
Vue axios 中提交表单数据(含上传文件)
2017/07/06 Javascript
手把手带你封装一个vue component第三方库
2019/02/14 Javascript
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
python 命令行传入参数实现解析
2019/08/30 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
Python存储读取HDF5文件代码解析
2020/11/25 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
澳大利亚相机之家:Camera House
2017/11/30 全球购物
早晨薰衣草在线女性精品店:Morning Lavender
2021/01/04 全球购物
某IT外企面试题-二分法求方程!看看大家的C++功底
2015/07/04 面试题
光声世纪笔试题目
2012/08/25 面试题
护理专业学生的求职信范文
2013/12/11 职场文书
旅游网创业计划书
2014/01/31 职场文书
财务管理专业求职信
2014/06/11 职场文书
2014年路政工作总结
2014/12/10 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
办公用品管理制度
2015/08/04 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js