Parse 的 javascript CloudCode 的 httprequest 字符串操作添加额外的反斜杠

Posted

技术标签:

【中文标题】Parse 的 javascript CloudCode 的 httprequest 字符串操作添加额外的反斜杠【英文标题】:Parse's javascript CloudCode's string manipulation for httprequest adding extra backslash 【发布时间】:2015-03-21 17:44:02 【问题描述】:

我在 parse 的云代码中有简单的 javascript 来收集我添加到 cloudcode 中的 httprequest 以发送到 mandrill 的电子邮件地址列表。

但是,http 请求似乎有额外的反斜杠 (\) 导致 mandrill 拒绝该请求。尽管如此,然后我在 cloude 代码的警报框中打印相同的字符串,它完美地打印出来。我已经将 httprequest 日志与硬编码的电子邮件列表请求(该请求成功)进行了比较,因此我知道这些额外的字符。

我真的不确定发生了什么,任何指针将不胜感激。

我的代码和部分日志如下所示:

以字符串形式收集电子邮件的云代码: . .

var query1 = new Parse.Query(Parse.User);
                       query1.equalTo("emailVerified", true);
                       query1.find(
                           success: function (object)
                           
                                 var emaillink;
                               for (var i=0;i<object.length;i++)
                               
                                   var testresult=object[i];
                                   if(i==0)
                                   
                                     emaillink="\'"+testresult.get("email")+"\', \"name\" : \'"+testresult.get("username")+"\', \"type\" : \'to\' ,";

                                   
                                   else
                                   
                                     emaillink=emaillink+" \"email\" : \'"+testresult.get("email")+"\', \"name\" : \'"+testresult.get("username")+"\', \"type\" : \'to\' ,"
                                   

                               
                               emaillink = emaillink.substring(0, emaillink.length - 2);
                               alert(emaillink);
                               Parse.Cloud.httpRequest(...

cloudcode 将这些电子邮件添加到 mandrill 的 httprequest 格式:

。 . .

   "to": [
             "email": emaillink
           
          ]

。 .

警报日志:

##################################################
# Alert                                          #
##################################################
#                                                #
# 'abc@gmail.com', "name" : 'abc               1 #
# ', "type" : 'to' , "email" : 'abcdefghijklnm #
# 101@gmail.com', "name" : 'abcdefgh', "type" :  #
# 'to' , "email" : 'qwertyiopau@yahoo.com', "n #
# ame" : 'qwertyiop', "type" : 'to'              #
#                                                #
#                                         [ OK ] #
#                                                #
##################################################

登录httprequest的cloudcode:

..."text":"[\"email\":\"'abc@gmail.com', \\\"name\\\" : 'abc     1', \\\"type\\\" : 'to' , \\\"email\\\" : 'abcdefghijklnm101@gmail.com', \\\"name\\\" : 'abcdefghijklnm', \\\"type\\\" : 'to' , \\\"email\\\" : 'abcdefghijklnm@yahoo.in', \\\"name\\\" : 'abcdefghijklnm', \\\"type\\\" : 'to'\",\"status\":\"invalid\",\"_id\":\"18523fc4a3d24a1398c303972af47cd8\",\"reject_reason\":null]","data":["email":"'abc@gmail.com', \"name\" : 'abc', \"type\" : 'to' , \"email\" : 'abcdefghijklnm101@gmail.com', \"name\" : 'abcdefghijklnm', \"type\" : 'to' , \"email\" : 'abcdefghijklnm@y.in', \"name\" : 'abcdefghijklnm', \"type\" : 'to'","status":"invalid","_id":"18523fc4a3d24a1398c303972af47cd8","reject_reason":null],"buffer":"0":91....

请忽略电子邮件,我已将实际电子邮件替换为一些随机电子邮件值。这些值是正确的,我已经检查过了。

只是这些额外的 \ 我无法解释。非常感谢任何帮助。谢谢

【问题讨论】:

【参考方案1】:

您没有以正确的方式构建阵列。这是您的案例的示例:

...
var emaillink = [] // Initialize an empty array;
for (var i=0;i<object.length;i++) 

    var testresult = object[i];

    emaillink.push(                        // We push each email in our array
        email: testresult.get("email"),
        name: testresult.get("username"),
        type: "to"
    )

...

这是您构建 JSON 对象的方式,您无需创建字符串。如果你想得到你的 json 数组的字符串,你只需要这样做:

emaillink.toString();

所以你只需要将这个对象传递给你的 httpRequest。您可能不必执行 'toString()' 只需传递对象,httpRequest 会将其字符串化。

为了完全回答您的问题,额外的“\”是转义字符。当发送字符串时,您使用 '\' 来转义字符串中的 '"'

【讨论】:

以上是关于Parse 的 javascript CloudCode 的 httprequest 字符串操作添加额外的反斜杠的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 之 JSON [4] parse()和stringify() -JSON字符串和JavaScript对象数据之间的相互转换

使用 Parse Code Cloud Javascript 函数更改 Parse 列的值

从一个 JSON.parse 错误深入研究 JavaScript 的转义字符

Python 中parse.quote类似JavaScript encodeURI() 函数

JavaScript Date.parse()详解

类似php parse_str 自定义 JavaScript parse_str 获取地址栏参数