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 相关文章推荐
Whatever:hover 无需javascript让IE支持丰富伪类
Jun 29 Javascript
用jquery方法操作radio使其默认选项是否
Sep 10 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
Mar 01 Javascript
浅谈js中StringBuffer类的实现方法及使用
Sep 02 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
Oct 12 Javascript
js实现弹窗暗层效果
Jan 16 Javascript
jQuery弹出层插件popShow用法示例
Jan 23 Javascript
Vue 短信验证码组件开发详解
Feb 14 Javascript
解析jquery easyui tree异步加载子节点问题
Mar 08 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
May 23 Javascript
微信小程序动态生成二维码的实现代码
Jul 25 Javascript
工作中常用js功能汇总
Nov 07 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
xtree.js 代码
2007/03/13 Javascript
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
基于jQuery实现左右div自适应高度完全相同的代码
2012/08/09 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
Javascript之String对象详解
2016/06/08 Javascript
Javascript基础_简单比较undefined和null 值
2016/06/14 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
python 查找文件夹下所有文件 实现代码
2009/07/01 Python
python遍历数组的方法小结
2015/04/30 Python
python读取与写入csv格式文件的示例代码
2017/12/16 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
GafasWorld西班牙:购买太阳镜、眼镜和隐形眼镜
2019/09/08 全球购物
企业宣传策划方案
2014/05/29 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
工作会议通知
2015/04/15 职场文书
2015年大学班级工作总结
2015/04/28 职场文书
亮剑精神观后感
2015/06/05 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
Python 统计序列中元素的出现频度
2022/04/26 Python
小程序实现侧滑删除功能
2022/06/25 Javascript