【问题标题】:How to post an array of emails as cfhttpparam?如何将一组电子邮件作为 cfhttpparam 发布?
【发布时间】:2015-01-26 22:13:04
【问题描述】:

所以我正在尝试使用 Coldfusion 将一系列电子邮件发布到 API。

为了快速了解 API 架构,

{
 "emails":["foo@bar.com", "bar@foo.com"],
 "orgId":1,
 "subject":"foobar",
 "body":"foobar",
 "sender":"foobar@com"
}

现在这是我的冷融合脚本

<cffunction name="inviteusers" access="public" returntype="any">
    <cfset var data = "" />
    <cfhttp url="urlserver#UserInvite" method="post" username="#username#" password="#urlpass#" result="data">
        <cfhttpparam name="emails"  this is array or emails>
        <cfhttpparam name="orgID" type="formType" value="1">
        <cfhttpparam name="body" type="formType" value="this is the body">
        <cfhttpparam name="sender" type="formType" value="hmm@yahoo.com">
    </cfhttp>
</cffunction>

电子邮件是我卡住的地方。我不知道如何解决这个问题。

谢谢你们!

【问题讨论】:

  • API 是否真的期望接收 JSON?如果是这样,上述将不起作用。否则,请尝试使用两个&lt;cfhttpparam name="emails" ...>` 标签,每个地址一个。结果如何?
  • 嗨@Leigh,如果API 需要JSON,您能否解释一下为什么上述方法不起作用?是的,API 接收并返回 JSON。如果我为每个地址做一个,这意味着我必须根据电子邮件地址的数量调用这个 API 或者做一个 foreach 循环..
  • JSON 是一个特定格式的字符串。上面的代码只是通过标准帖子发送键/值对。它不会自动将数据转换为 JSON。因此,如果这是接收端所期望的,它可能不会起作用。您能否提供指向 API 文档的链接?您很可能需要使用各种 orgId 等创建一个 CF 结构。然后使用 SerializeJSON,但我们需要查看 API 以提供更具体的建议。
  • @Leigh 啊!我明白了,我的坏。对不起,不完整的细节。我正在使用带有datatype: 'json' 到inviteuser 方法的Jquery 帖子到控制器类(在MVC 框架上工作)。我已经创建了一个 Javascript obj 来包含我需要的数据,就像您在上面解释的那样(只是在 Javascript 中呵呵^^).. 非常感谢 Leigh!我终于设法回答了这个问题..我会在这里发布

标签: arrays post parameters coldfusion


【解决方案1】:

好吧,

我是这样回答这个问题的。由于我正在研究 MVC 框架,因此在我拥有表单的视图中,我为控制器中的函数创建了一个 JQuery post 函数。

我有一个 html 输入,用户可以在其中输入以逗号分隔的任意数量的电子邮件。我有一个 javascript 函数,它获取输入的值并将它们拆分为“逗号”,然后将它们添加到数组对象中。

由于 API 的结构如下:

{
 "emails":["foo@bar.com", "bar@foo.com"],
 "orgId":1,
 "subject":"foobar",
 "body":"foobar",
 "sender":"foobar@com"
}

在我的$.post() 函数中,我有一个对象可用作数据:

var myData = {
                "emails" : myEmails, //This myEmails is an array['fooBar@.com', 'barfoo@.com'] of emails from the single email input.
                "orgId" : 1,
                "subject" : $('#vgridSubject').val(),
                "body" : $('#vgridText').val(),
                "sender" : "foobar@ls.com"
            }

现在在我的控制器中,这是我处理电子邮件数组的方式

<cfscript>
  sendInvites = postUserInvite(emails = FORM['EMAILS[]'], orgID = FORM.orgID, subject = FORM.subject, body = FORM.body, sender = FORM.sender)
</cfscript>

注意FORM['EMAILS[]'],因为这让我可以访问表单范围内的值。

链接到表单数组Working with Form Arrays in ColdFusion?

【讨论】:

  • 不确定我是否理解这与 cfhttpparam 的关系,但很高兴您找到了答案。回复:注意FORM['EMAILS[]']你在代码中的什么地方使用了字段名称“emails[]”?
猜你喜欢
  • 1970-01-01
  • 2013-02-18
  • 2014-02-24
  • 2013-11-17
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多