最近、開発中に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を設定する必要はありません