如何使用ajax将js数组发送到servlet?

时间:2013-03-04 22:34:43

标签: javascript ajax servlets

我有一个textarea,用户可以在那里输入一封或多封电子邮件,每封电子邮件用逗号分隔。

我的js代码:

    var emails = $("#emails").val().split(",");

    if (emails.length == 0)
    {
        window.alert("Enter an email address.");
        $("#emails").focus();
        return;
    }

    var valid = validateEmails(emails);
    var goodEmails = valid[0];
    var badEmails = valid[1];
    var json = JSON.stringify(goodEmails);

    $.ajax
    ({
        url: "/mfa/service/initiate_user",
        type: "POST",
        data: {"emails" : json},

我看到的数据:

["yao@a.com","yao@b.com]

我所希望的:

yao@a.com, yao@b.com

我在后端处理它的方式基本上是从它中删除“[]”然后从每封电子邮件中删除引号。

没有那些愚蠢的括号和引号,将电子邮件发送到后端的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

要获取表单yao@a.com, yao@b.com,您可以使用Array.join(delim)功能。

例如:

var emails = ["yao@a.com", "yao@b.com"];
var email_string = emails.join(", ");
// email_string:
// yao@a.com, yao@b.com

但是,我会说你想把这些电子邮件保存为数组并执行以下操作:

var valid = validateEmails(emails);
var goodEmails = valid[0];
var badEmails = valid[1];

$.ajax
({
    url: "/mfa/service/initiate_user",
    type: "POST",
    data: {"emails" : goodEmails},
...

这将允许您解析返回的JSON对象。而不是在emails中有一个字符串,你将拥有一个数组。不确定你的后端,但如果你已经能够解析JSON,这可能是一种更简单的方法。

答案 1 :(得分:0)

尝试将标头添加到ajax配置:

标题:{'Content-type':“application / json; charset = utf-8”}