Jquery 如何使用Coldfusion 9将JSON发布到远程url?

Jquery 如何使用Coldfusion 9将JSON发布到远程url?,jquery,json,coldfusion,Jquery,Json,Coldfusion,我们正在尝试与需要JSON格式数据的远程API通信。我们尝试按如下方式使用JQuery提交此文件,但出现了SOP错误: <script type="text/javascript"> $.ajax({ username: 'username', password: 'password', url: "https://api.e2ma.net/123/members/add", dataType: 'json', type: 'POST',

我们正在尝试与需要JSON格式数据的远程API通信。我们尝试按如下方式使用JQuery提交此文件,但出现了SOP错误:

<script type="text/javascript">
  $.ajax({
    username: 'username',
    password: 'password',
    url:  "https://api.e2ma.net/123/members/add",
    dataType: 'json',
    type: 'POST',
    data:
     {
       "fields": {
       "name_first": "Name"
     },
     "email": "email@domain.com"
    }
  });
</script>

谢谢。

您需要构建一个代理,因为您无法从JavaScript发布到其他服务器。您的JS代码应该如下所示:

$.ajax({
url:  "https://yourserver/proxy.cfm",
dataType: 'json',
type: 'POST',
data:
 "name_first": "Name",
 "email": "email@domain.com"
}
});
您的ColdFusion代码应该如下所示:

<cfhttp url="https://api.e2ma.net/123/members/add" method="post" username="username" password="password">
    <cfhttpparam name="email" value="#form.email#">
    <cfhttpparam name="fields" value='{"name_first":"#form.name_first#"}'>
</cfhhtp>

我不确定这些字段是否符合所需的格式,但ti应该非常接近

您也可以在发布帖子后,将您得到的任何内容返回到JavaScript,如下所示:

<cfoutput>#cfhttp.filecontent#<cfoutput>
#cfhttp.filecontent#

您需要构建一个代理,因为您无法从JavaScript发布到另一台服务器。您的JS代码应该如下所示:

$.ajax({
url:  "https://yourserver/proxy.cfm",
dataType: 'json',
type: 'POST',
data:
 "name_first": "Name",
 "email": "email@domain.com"
}
});
您的ColdFusion代码应该如下所示:

<cfhttp url="https://api.e2ma.net/123/members/add" method="post" username="username" password="password">
    <cfhttpparam name="email" value="#form.email#">
    <cfhttpparam name="fields" value='{"name_first":"#form.name_first#"}'>
</cfhhtp>

我不确定这些字段是否符合所需的格式,但ti应该非常接近

您也可以在发布帖子后,将您得到的任何内容返回到JavaScript,如下所示:

<cfoutput>#cfhttp.filecontent#<cfoutput>
#cfhttp.filecontent#

如果要在服务器上设置一个代理来获取远程JSON数据,然后使用JavaScript调用本地代理,它获取远程数据,并将其返回到浏览器。jQuery提供了使用
$.parseJSON()
解码JSON的能力。您的代理只是JavaScript和远程服务之间的中介,以避免跨域策略问题。通过直接在CF中发布此JSON数据,是否有办法跳过JQuery/JS(从而不需要代理)?当然,使用CF获取远程数据,然后以您想要的任何格式输出。我之所以提到JavaScript部分,是因为您用jQuery标记了这个问题。如果没有JavaScript,您将不得不重新加载整个页面以获取新数据,我想这是只使用服务器端脚本的缺点。我相信
cfhttp
会帮您做到这一点。您可以向远程服务器发送
post
get
请求并接收其响应。我只编辑过其他人的代码,所以我不是专家,但在CF中这很容易。您想在服务器上设置一个代理,获取远程JSON数据,然后使用JavaScript调用本地代理,它获取远程数据,并将其返回到浏览器。jQuery提供了使用
$.parseJSON()
解码JSON的能力。您的代理只是JavaScript和远程服务之间的中介,以避免跨域策略问题。通过直接在CF中发布此JSON数据,是否有办法跳过JQuery/JS(从而不需要代理)?当然,使用CF获取远程数据,然后以您想要的任何格式输出。我之所以提到JavaScript部分,是因为您用jQuery标记了这个问题。如果没有JavaScript,您将不得不重新加载整个页面以获取新数据,我想这是只使用服务器端脚本的缺点。我相信
cfhttp
会帮您做到这一点。您可以向远程服务器发送
post
get
请求并接收其响应。我只编辑过其他人的代码,所以我不是专家,但在CF中它变得非常简单。好的,所以我们需要使用cfhttp。在这种情况下,为了使其尽可能模块化,我们可以在ajax调用中指定不同的方法,这些方法将指向proxy.cfm中的不同cfhttp调用吗?一个用于添加,一个用于删除等?当然。为了保持简单,您可以使用cfswitch,并为您需要使用的每个方法提供一个案例。您还可以使ColdFusion代码具有足够的通用性,以便只需要传入所需的内容并将其传输到另一台服务器。但是,如果不知道另一台服务器的API以及它期望的字段和集合类型,我就不想从这里开始。在这种情况下,为了使其尽可能模块化,我们可以在ajax调用中指定不同的方法,这些方法将指向proxy.cfm中的不同cfhttp调用吗?一个用于添加,一个用于删除等?当然。为了保持简单,您可以使用cfswitch,并为您需要使用的每个方法提供一个案例。您还可以使ColdFusion代码具有足够的通用性,以便只需要传入所需的内容并将其传输到另一台服务器。但是,如果不了解另一台服务器的API以及它希望使用的字段和集合类型,我就不想从这里开始。