2013-03-04 46 views
0

我有一個textarea,用戶可以在那裏輸入1個或多個電子郵件,每個電子郵件用逗號分隔。如何使用ajax發送js數組到servlet?

我的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}, 

我看到的數據:

["[email protected]","[email protected]] 

我所期待的:

[email protected], [email protected] 

我會處理它在後端是這樣的基本上從中刪除「[]」,然後從每封電子郵件中刪除引號。

什麼是正確的方式發送電子郵件後端沒有這些愚蠢的括號和報價?

+0

什麼validateEmails返回?這些電子郵件仍然被','分割嗎? – quandrum 2013-03-04 22:42:27

+0

@quandrum validateEmails()基本上拆分電子郵件字符串,然後返回[好電子郵件,壞電子郵件]的列表 – iCodeLikeImDrunk 2013-03-04 22:46:29

回答

3

要獲得表格[email protected], [email protected],您可以使用Array.join(delim)函數。

例:

var emails = ["[email protected]", "[email protected]"]; 
var email_string = emails.join(", "); 
// email_string: 
// [email protected], [email protected] 

不過,我會說你想保持電子郵件作爲一個數組,並做如下:

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,這可能是一個更簡單的方法。

+0

啊加入!這似乎是工作。謝謝!我必須使用字符串,這就是我們的servlet如何設置哈哈。 – iCodeLikeImDrunk 2013-03-04 23:46:27

0

嘗試頭添加到AJAX配置:

頭:{ '內容類型': 「應用/ JSON;字符集= UTF-8」}