JSON配列としてデータを持つサーブレットにAJAXリクエストを送信するJSPページがあります。しかし、サーブレットでnull値を取得しています。Request.getParameter()はnullを返しますが、たとえばdata:{jsonData: 'test'}に単純なjsonオブジェクトを使用しようとすると、うまくいきます。
Ajaxスニペット
function updateStatus() {
var Url = {
"Urls" : [
{
"Env" : "DEV : CC",
"Url" : "https://localhost:8081/cc",
"Status" : "Up",
"Revision" : ""
}, {
"Env" : "MO : CM",
"Url" : "https://localhost:8082/ab",
"Status" : "Up",
"Revision" : "" } ] }
$.ajax({
url:'Environment',
data:{jsonData : Url},
type:'post',
cache:false,
success:function(data){
alert('Hi');
},
error:function(){
alert('error');
}
});
}
サーブレット機能
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try
{
String jsonString = request.getParameter("jsonData");
JSONArray array = new JSONArray(jsonString);
for (int i = 0; i < array.length(); i++) {
String path = array.getString(i);
System.out.println(path);
}
}
catch (JSONException e)
{
e.printStackTrace();
}
データを送信するときに、ブラウザ開発者ツールの[ネットワーク]タブ(Chrome)Form Data
でリソースのを確認するEnvironment
と、データが次のように配列としてサーバーに送信されていることがわかります。
jsonData[Urls][0][Env]:DEV : CC
jsonData[Urls][0][Url]:https://localhost:8081/cc
jsonData[Urls][0][Status]:Up
jsonData[Urls][0][Revision]:
jsonData[Urls][1][Env]:MO : CM
jsonData[Urls][1][Url]:https://localhost:8082/ab
jsonData[Urls][1][Status]:Up
jsonData[Urls][1][Revision]:
したがって、この場合、それぞれに個別にアクセスできます。
request.getParameter("jsonData[Urls][0][Url]");
request.getParameter("jsonData[Urls][1][Env]");
ただし、これを使用data:{jsonData : JSON.stringify(Url)}
して取得し、request.getParameter("jsonData");
有効なJson文字列をサーバー側に送信し、任意のJsonパーサーライブラリを使用して解析することができます。
注: jsonデータは、「application / json」ではなく、「application / x-www-form-urlencoded」というコンテンツタイプのキーと値のペアとしてエンコードされます。したがって、でアクセスできますrequest.getParameter()
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加