これは、バックグラウンド SpringMVC コントローラーが isform パラメーターを受け取り、その値を単に入力するメソッドです:
@RequestMapping(method = RequestMethod.POST) @ResponseBody public Map<String, Object> save( @RequestParam(value = "isform", required = false) String isform) { System.out.println("isform value: " + isform); return null; }
フロントページはフォームを送信するための投稿リクエストを送信します
バックグラウンドで値が取得されていないことが判明しました
後で考えた最初の解決策は、json パラメーターを受け取るために requestbody をコントローラー メソッドのパラメーターに追加することでした。
@RequestMapping(method = RequestMethod.POST) @ResponseBody public Map<String, Object> save( @RequestParam(value = "isform", required = false) @RequestBody String isform) { System.out.println("isform value: " + isform); return null; }
しかし、isform の値の結果は依然として null です、
そこで、以前のプロジェクトで投稿リクエストを受信するためのパラメーターを比較したところ、興味深い現象が見つかりました。
以下は Angular のデフォルトのリクエストヘッダーです:
$httpProvider.defaults.headers.post: (POST リクエストのヘッダーのデフォルト)
Content-Type: application/json
$httpProvider.defaults.headers.put(PUT リクエストのヘッダーのデフォルト)
Content-Type: application/json
Angular の post と put は両方とも application/json、
jquery のポストリクエストの「Content-Type」はデフォルトで「application/x-www-form-urlencoded」になっているため、angular のデフォルトの Content-Type を変更しました。
app.config(function($httpProvider) { $httpProvider.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded'; $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; });
次のリクエストボディはこうなりますが、この後もisformの値が取得できません、
長い間チェックした結果、ある外国人のブログでその理由を発見しました:
デフォルトでは、jQuery は Content-Type: x-www-form-urlencoded とおなじみの foo=bar&baz=moe シリアル化を使用してデータを送信しますが、AngularJS は Content-Type: application/json と { を使用してデータを送信します。 "foo": "bar", "baz": "moe" } JSON シリアル化
私自身による翻訳:
デフォルトでは、jQuery は Content-Type: x-www-form-urlencoded と「foo=bar&baz=moe」のようなシーケンスを使用してデータを送信しますが、AngularJS は Content-Type: application/json と { " を使用してデータを送信します。 foo": "bar", "baz": "moe" } このような JSON シーケンス。
したがって、Content-Type を x-www-form-urlencodedand に設定した後も、シーケンスの形式を変換する必要があります。
以下は私が外国人と練習した後に自分で試した最終的な解決策です:
app.config(function($httpProvider) { $httpProvider.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded'; $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; // Override $http service's default transformRequest $httpProvider.defaults.transformRequest = [function(data) { /** * The workhorse; converts an object to x-www-form-urlencoded serialization. * @param {Object} obj * @return {String} */ var param = function(obj) { var query = ''; var name, value, fullSubName, subName, subValue, innerObj, i; for (name in obj) { value = obj[name]; if (value instanceof Array) { for (i = 0; i < value.length; ++i) { subValue = value[i]; fullSubName = name + '[' + i + ']'; innerObj = {}; innerObj[fullSubName] = subValue; query += param(innerObj) + '&'; } } else if (value instanceof Object) { for (subName in value) { subValue = value[subName]; fullSubName = name + '[' + subName + ']'; innerObj = {}; innerObj[fullSubName] = subValue; query += param(innerObj) + '&'; } } else if (value !== undefined && value !== null) { query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&'; } } return query.length ? query.substr(0, query.length - 1) : query; }; return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data; }]; });
上記のコードを angular モジュールに追加して、その効果を見てみましょう:
投稿リクエストのスタイルが jquery の投稿リクエストのスタイルと一致していることがわかりました。これは本当ですか? ! !
バックグラウンドでパラメータ受信ステータスを確認します。
isform がパラメータを正常に受信できるようになり、これで完了です。
上記は、angular のポストリクエストのバックグラウンド受信パラメーターが null になる場合の解決策です。皆さんの学習に役立つことを願っています。

本篇文章继续Angular的学习,带大家了解一下Angular中的元数据和装饰器,简单了解一下他们的用法,希望对大家有所帮助!

本篇文章带大家深入了解一下angular的状态管理器NgRx,介绍一下NgRx的使用方法,希望对大家有所帮助!

angular中怎么使用monaco-editor?下面本篇文章记录下最近的一次业务中用到的 monaco-editor 在 angular 中的使用,希望对大家有所帮助!

本篇文章给大家分享一个Angular实战,了解一下angualr 结合 ng-zorro 如何快速开发一个后台系统,希望对大家有所帮助!

Angular项目过大,怎么合理拆分它?下面本篇文章给大家介绍一下合理拆分Angular项目的方法,希望对大家有所帮助!

怎么自定义angular-datetime-picker格式?下面本篇文章聊聊自定义格式的方法,希望对大家有所帮助!

本篇文章带大家了解一下Angular中的独立组件,看看怎么在Angular中创建一个独立组件,怎么在独立组件中导入已有的模块,希望对大家有所帮助!

Angular Route中怎么提前获取数据?下面本篇文章给大家介绍一下从 Angular Route 中提前获取数据的方法,希望对大家有所帮助!


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ホットトピック



