contentTypeをajaxで設定する方法、contentTypeのいくつかの一般的な状況

最近、開発中にajax送信パラメーターの問題が発生し、パラメーターをバックグラウンドで取得できないため、最初にajaxのいくつかの一般的な属性を整理します。

1. contentTypeのいくつかの一般的な状況では
application/json; charset=utf-8、データがjson文字列である必要があります

"text/html"  对于html
"text/xml " 对于xml

application/x-www-form-urlencoded(デフォルト)
データ要件に対応するデータの場合はcontentType、データエンコーディングが提供される場合はcontentType2。ajaxがデータを
送信する場合、 json形式の対象となる2と
同様のいくつかの方法でデータ転送パラメータこの形式内部のデータメソッドを呼び出します上記の形式でデータをスプライスするには、上記の2つでcontentTypeを設定する必要はなく、デフォルトを使用します。postまたはgetに関係なく、 serializeArray()はjsonオブジェクトを取得できシリアル化された文字列3に変換できます。。提出方法は、提出を取得し、提出を投稿します。name=zs&sex=1
{key:value,key:value}$.ajax()$.param()



$.ajax({
		type:'post',
		url: '/erongDemo/bankServlet',
		data:{"name":$("#sname").val(),"sex":$("#sex").val()},
		contentType:'application/json;charset=utf-8',
		dataType:'json',
		success:function(data){
			
		}
	});

送信後、contentTypeをapplication / jsonに設定すると、データもjsonオブジェクトになります。値はサーブレットで取得できません。ブラウザで読み取った後、
データはシリアル化されていますが、リクエストは値を取得できません。最終的な解決策は、デフォルト値としてForcontentTypeを変更することです。

ここに画像の説明を挿入
ここに画像の説明を挿入
送信する:

$.ajax({
		type:'get',
		url: '/erongDemo/bankServlet',
		data:{"name":$("#sname").val(),"sex":$("#sex").val()},
		contentType:'application/json',
		dataType:'json',
		success:function(data){
		}
	});

今回はgetを使用して送信し、contentTypeもapplication / jsonに設定されています。ブラウザーを見てください。ヘッダーにcontentType属性はありません。getsubmission
パラメーターはリクエストエンティティに配置されていないはずですが、 URLの後ろでスプライスされます。

ここに画像の説明を挿入
今回は、送信されたデータからcontentTypeが削除され、リクエストヘッダーにそのような属性がないため、contentTypeが設定されていない可能性があります

結論:Ajaxの投稿後はcontentTypeを設定しません。デフォルト値のapplication / x-www-form-urlencodedを使用します。これは、送信されたデータがjsonオブジェクトである場合に適しています。

そして、送信を取得するためにcontentTypeを設定する必要はありません

かりて

おすすめ

転載: blog.csdn.net/qq_34462698/article/details/113125318