国产探花免费观看_亚洲丰满少妇自慰呻吟_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結果。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜兴市| 丹东市| 台东市| 兴义市| 宜良县| 兴业县| 拉萨市| 高雄县| 萨嘎县| 九台市| 靖安县| 渭源县| 茂名市| 通州市| 义乌市| 三亚市| 泗水县| 宜都市| 凤凰县| 水城县| 宜城市| 清苑县| 内乡县| 砀山县| 乌拉特后旗| 西藏| 增城市| 西城区| 娱乐| 广南县| 武乡县| 百色市| 苏州市| 南阳市| 全州县| 永修县| 搜索| 上栗县| 沈丘县| 塔城市| 德令哈市|