我有一个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
我在后端处理它的方式基本上是从它中删除“[]”然后从每封电子邮件中删除引号。
没有那些愚蠢的括号和引号,将电子邮件发送到后端的正确方法是什么?
答案 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”}