我們正在嘗試與需要JSON格式數據的遠程API進行通信。我們試圖如下提交此使用JQuery,但都拿到SOP錯誤:如何使用Coldfusion 9將JSON發佈到遠程URL?
<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 protected]"
}
});
</script>
不幸的是,他們的API 不支持JSONP。
我們怎樣才能將這個JSON數據直接從Coldfusion 9中發佈到他們的遠程API?
另外,我們需要做些什麼來從他們的API解析迴應?
下面是該文檔的鏈接:http://myemma.com/api-docs/
這裏是一個簡單的代碼片段從這些文檔添加新成員的呼叫:
import_single_member(account_id)
POST /#account_id/members/add
Adds or updates an audience member
Parameters:
email (string) – Email address of member to add or update
fields (dictionary) – Names and values of user-defined fields to update
group_ids (integer) – Optional. Add imported members to this list of groups.
signup_form_id – Optional. Indicate that this member used a particular signup form.
Returns:
The member_id of the new or updated member, and whether the member was added or an existing member was updated
Example:
POST /123/members/add
{
"fields": {
"first_name": "Benjamin"
},
"email": "[email protected]"
}
{
"added": true,
"member_id": 1024
}
感謝。
你想設置,抓住遠程JSON數據服務器上的代理,你再打電話給當地的代理使用JavaScript,它獲取遠程數據,並將其返回給瀏覽器。 jQuery提供了使用'$ .parseJSON()'解碼JSON的能力。您的代理僅充當JavaScript和遠程服務之間的中介,以避免跨域策略問題。 – Jasper
沒有辦法通過直接從CF中發佈這個JSON數據來完全跳過JQuery/JS(從而需要代理)嗎? –
當然,用CF抓取遠程數據,然後以任何你想要的格式輸出。我只提到了JavaScript部分,因爲你用jQuery標記了問題。如果沒有JavaScript,您將不得不重新加載整個頁面以獲取新數據,我認爲只使用服務器端腳本是不利的。 – Jasper