Javascript 如何根据条件传递数据?
我有一个页面,可以选择通过电子邮件发送单个文件或勾选几个文件并发送电子邮件。他们都使用各自的JavaScript函数调用了这个页面Javascript 如何根据条件传递数据?,javascript,java,ajax,jsp,Javascript,Java,Ajax,Jsp,我有一个页面,可以选择通过电子邮件发送单个文件或勾选几个文件并发送电子邮件。他们都使用各自的JavaScript函数调用了这个页面email.jsp Email.jsp: String files=null; String url=null; String id=null; String hash=null; String[] array=null; String[] split=null; i
email.jsp
Email.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);
}
这意味着,如果是一封电子邮件,则获取这四个参数,如果是多封电子邮件,则获取这两个参数。到目前为止还可以。现在,一旦获得属性,我想将参数传递到sendmail.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({
url:'sendmail.jsp',
键入:“POST”,
数据:{
收件人:收件人,
主题:主题,,
内容:内容,,
id:“”,
哈希:“”
},
成功:功能(数据){
警报(“已成功向队列发送电子邮件”);
},
错误:函数(请求、错误){
警报(“请求:+JSON.stringify(错误));
}
});
所以在这个ajax中,它基本上是基于一封电子邮件来传递数据的。肯定会有用的。但是,如果我发送多封电子邮件并单击相同的发送按钮,它将把相同的数据传递到下一页,但不需要id
和hash
,您可以从my email.jsp中看到这一点
现在,我不知道是否有解决办法。有没有一种方法可以根据条件传递数据?当然,有一种方法可以做到这一点 只需在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之外初始化对象并根据条件添加ID和哈希键?然后,您可以将此对象用作数据。为什么根据所选文件的数量有不同的数据格式?无论选择了0、1或多个文件,只需使用相同的格式即可。(提示:arraylist可以包含1个元素,但仍然是arraylist。)基本上,与其试图使代码过于复杂以处理构造不良的数据结构,使用更好的数据结构并保持代码简单。@David我不懂你的意思question@KrishnaPrashatt我在ajax外部初始化了我的对象,并使用if条件指定id/哈希。然后将数据对象传递给ajax。在另一个页面中,我是否以与
request.getparameter
?@Daredevil相同的方式检索特定的数据,在另一个页面中,你的意思是Email.jsp?
不需要多个ajax调用,正如OP所提到的,数据中只有一个差异,所有其他参数保持不变。这只是为了给大家一个想法,显然,您应该修改代码以满足您的要求。因此,您建议如何最好地执行此操作?@KrishnaPrashatt我将如何处理此问题?只需创建if条件并传递条件{}内的值即可。