【问题标题】:How to pass data based on conditions?如何根据条件传递数据?
【发布时间】:2019-04-25 10:28:55
【问题描述】:

我有一个页面,可以选择通过电子邮件发送单个文件或勾选几个文件并通过电子邮件发送它们。他们都使用各自的 JavaScript 函数将此页面称为 email.jsp

电子邮件.jsp:

 String files=null;
        String url=null;
        String id=null;
        String hash=null;
        String[] array=null;
        String[] split=null;


        if(multiemail.equals("no")) {

           //get parameters from email()


           files= request.getParameter("filename");
            url = request.getParameter("link");
            id = request.getParameter("id");
            hash = request.getParameter("hash");

       }else{

            split = request.getParameter("link").split(",",0);
            array = request.getParameter("arrayList").split(",",0);

        }

也就是说,如果是单封邮件,就取那四个参数,如果是多封邮件,就取这两个参数。到目前为止还可以。现在,一旦我得到属性,我想将参数传递给sendemail.jsp 来处理数据。

所以我的发送按钮会调用sendmessage()函数:

$.ajax({

               url: 'sendemail.jsp',
               type: 'POST',
               data: {
                   recipient: recipient,
                   subject: subject,
                   content: content,
                   id:"<%=id%>",
                   hash:"<%=hash%>"


               },

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

所以在这个 ajax 中,它基本上是根据是否是一封电子邮件来传递数据。当然会奏效。但是,如果我发送多封电子邮件并单击相同的发送按钮,它会将相同的数据传递到下一页,但它不需要 idhash,正如您从我的 email.jsp 中看到的那样。

现在,我不知道是否有解决方法。有没有办法可以根据条件传递数据?

【问题讨论】:

  • 为什么不考虑在ajax之外初始化对象,根据条件添加id和hash键呢?然后你可以使用这个对象作为数据
  • 为什么根据选择的文件数量不同而有不同的数据格式?无论选择 0 个、1 个还是多个文件,都只需使用相同的格式。 (提示:Arraylists 可以包含 1 个元素,但仍然是一个 arraylist。)基本上,与其试图过度复杂化代码来处理构造不佳的数据结构,不如使用更好的数据结构并保持代码简单。
  • @David 我不关注你的问题
  • @KrishnaPrashatt 我在 ajax 之外初始化了我的对象并使用 if 条件来指定 id/hash。然后将数据对象传递给 ajax。在另一页中,我是否以与request.getparameter 相同的方式检索该特定数据?
  • @Daredevil,通过其他页面,你的意思是Email.jsp?

标签: javascript java ajax jsp


【解决方案1】:

当然,有办法做到这一点。

只需在您的 ajax 调用之前和 if 条件的 {} 括号内创建一个条件,使用您的参数发出一个 ajax 请求。如果您有多个 if 条件,那么您可能必须编写多个 ajax 请求才能满足条件。

如果我要这样做,这是我的 javascript 代码。

       files= request.getParameter("filename");
        url = request.getParameter("link");
        id = request.getParameter("id");
        hash = request.getParameter("hash");


//  javascript code 

if(files != '' && url != '' && id != '' && hash != '' ) {

    $.ajax({

        // ajax code

    });

} else if (id != '' || hash != '' ) {

    $.ajax({

        // ajax code

    });

}

【讨论】:

  • 不需要多次 ajax 调用,因为 OP 已经提到只有数据不同,所有其他参数保持不变。
  • 这只是提供想法,显然您应该修改代码以满足您的要求
  • 那么你会如何推荐最好的方法呢?
  • @KrishnaPrashatt 我将如何解决这个问题?
  • 只需创建您的 if 条件并在条件的 { } 内传递值。
猜你喜欢
  • 2016-10-12
  • 2022-11-19
  • 2021-12-01
  • 2017-02-25
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多