如果存储为对象,如何检索数据?

时间:2019-04-26 04:27:38

标签: javascript java ajax

我正在使用ajax将数据传递到servlet。据我了解,标准方法通常是这样的:

IMPORTDATA

然后在jsp页面中,将这样检索数据:

$.ajax({

               url: 'page.jsp',
               type: 'POST',
               data: {

                     id:value,
                     name:value2

               },

               success: function (data) {
                   alert("Successfully initiated email to queue");
               },
               error: function (request, error) {
                   alert("Request: " + JSON.stringify(error));
               }
           });

这无疑会起作用。现在,如果我想将数据存储为对象怎么办。在我的JavaScript中是这样的:

String id = request.getParameter("id");
String name = request.getParameter("name");

然后,我使用相同的方式:

 var data;

     if(condition){

       data={
                'recipient': recipient,
                'subject': subject,
                'content': content,
                'id':"<%=id%>",
                'hash':"<%=hash%>",
                'multiemail':"no"

            }

    }else{

          data= {
                'recipient': recipient,
                'subject': subject,
                'content': content,
                'arrayList':<%=array%>,
                'multiemail':"yes"

            }

    }
  $.ajax({

               url: 'page.jsp',
               type: 'POST',
               data: {

                     info:data

               },

               success: function (data) {
                   alert("Successfully initiated email to queue");
               },
               error: function (request, error) {
                   alert("Request: " + JSON.stringify(error));
               }
           });

这将返回空值。如何准确地从对象中检索所需的数据值?

2 个答案:

答案 0 :(得分:0)

使用下面的代码行String recipient = request.getParameter("recipient"); 它会在

中的数据中寻找收件人密钥
           $.ajax({
           url: 'page.jsp',
           type: 'POST',
           data: {

                 info:data

           }

但是幸运的是,没有收件人,ajax中只有 info 键。 因此,您可以使用getParameter(“ info”)来获取数据。现在您有了数据。

请参考以下代码

$.ajax({
           url: 'page.jsp',
           type: 'POST',
           data: data

我认为您现在可以使用String recipient = request.getParameter("recipient");

答案 1 :(得分:0)

request.getParameter("recipient");将在您的数据中查找收件人密钥。但是您的密钥是info而不是recipient(这是信息的一部分)。要访问收件人,您必须先使用任何JSON解析库解析收到的JSON(request.getParameter("info")),然后从已解析的JSON对象访问收件人。

在您的ajax中,以json格式传递数据

$。ajax({

           url: 'page.jsp',
           type: 'POST',
           dataType: 'JSON',
           data: {
                 info:data
           },

           success: function (data) {
               alert("Successfully initiated email to queue");
           },
           error: function (request, error) {
               alert("Request: " + JSON.stringify(error));
           }
       });

在您的servlet端,像这样解析json:

JsonParser parser = new JsonParser();

String json = request.getParameter("info");

JsonElement jsonTree = parser.parse(json);
String recipientjsonTree.get("recipient");

JsonParser是GSON库的一部分。