国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

angularjs $http實現form表單提交示例

2019-11-19 16:22:47
字體:
來源:轉載
供稿:網友

需求:請求第三方后臺接口返回一段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結果。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台南县| 共和县| 四平市| 三门峡市| 大竹县| 西宁市| 叙永县| 兴和县| 西和县| 额济纳旗| 瑞安市| 休宁县| 安福县| 兴国县| 汝南县| 靖远县| 云梦县| 宁国市| 台北县| 平度市| 延津县| 祁阳县| 沙湾县| 和田市| 博客| 偏关县| 郸城县| 中山市| 宣恩县| 望城县| 新密市| 永安市| 宣武区| 腾冲县| 新干县| 桃江县| 文昌市| 和静县| 吴忠市| 靖远县| 景德镇市|