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+ajax实现顶一下,踩一下效果
Jul 17 Javascript
JavaScript类库D
Oct 24 Javascript
jQuery让控件左右移动的三种实现方法
Sep 08 Javascript
jQuery事件绑定与解除绑定实现方法
Apr 15 Javascript
仿百度换肤功能的简单实例代码
Jul 11 Javascript
AngularJS入门教程之服务(Service)
Jul 27 Javascript
详解vue slot插槽的使用方法
Jun 13 Javascript
[js高手之路]寄生组合式继承的优势详解
Aug 28 Javascript
AngularJS实现表单元素值绑定操作示例
Oct 11 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
Jul 23 Javascript
vue+element的表格实现批量删除功能示例代码
Aug 17 Javascript
element-ui使用导航栏跳转路由的用法详解
Aug 22 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
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
vue.js学习之vue-cli定制脚手架详解
2017/07/02 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
2020/09/22 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
python 队列详解及实例代码
2016/10/18 Python
利用Python实现颜色色值转换的小工具
2016/10/27 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
对python中xlsx,csv以及json文件的相互转化方法详解
2018/12/25 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
parser.add_argument中的action使用
2020/04/20 Python
golang/python实现归并排序实例代码
2020/08/30 Python
Python二元算术运算常用方法解析
2020/09/15 Python
python 实现表情识别
2020/11/21 Python
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
大专生简历的自我评价
2013/11/26 职场文书
四下基层实施方案
2014/03/28 职场文书
年终工作总结范文2014
2014/11/27 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书
python中tkinter复选框使用操作
2021/11/11 Python
python 管理系统实现mysql交互的示例代码
2021/12/06 Python
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫