2012-05-20 41 views
1

嗨我試圖從一個只返回JSON而不是JSONP的api獲取數據。每次我嘗試將數據連接爲JSONP時,它都不起作用,因爲我不期待JSON。所以,我想我必須使用PHP代理來解決跨域問題,這樣我才能解釋JSON請求。 [簡單的PHP代理] [1]是我試圖使用的一個,但我有一個時間試圖獲得最基本的功能工作。當我在示例頁面上輸入我想要查詢的示例網址時,它可以正常工作。當我這樣做的時候,它不會,有時候我會得到一個「Missing Command」(API的方式告訴我有太多或者太少的爭論)或者httpcode/jsoncode 404。我在查詢。我首先嚐試Authenticate命令。如果你在瀏覽器中鍵入該URL,你得到的結果我想: https://api.expensify.com?command=Authenticate&partnerName=applicant&partnerPassword=d7c3119c6cdab02d68d9&partnerUserID=expensifytest%40mailinator.com&partnerUserSecret=hire_me使用簡單的PHP代理跨域getJson請求

使用簡單的PHP代理我的請求URL真可謂是: http://people.rit.edu/~cjs6948/exp/ba-simple-proxy.php?url=https://api.expensify.com?command=Authenticate&partnerName=applicant&partnerPassword=d7c3119c6cdab02d68d9&partnerUserID=expensifytest%40mailinator.com&partnerUserSecret=hire_me

這是我非常簡單的jQuery代碼:

var proxy = 'ba-simple-proxy.php'; 
url = proxy + '?' + "url=" + "https://api.expensify.com? command=Authenticate&partnerName=applicant&partnerPassword=d7c3119c6cdab02d68d9&partnerUserID=expensifytest%40mailinator.com&partnerUserSecret=hire_me"; 
$.getJSON(url, function(data){}); 

「ba-simple-proxy.php」可以在這裏找到[這裏] [3]。有沒有人有嘗試通過代理連接到跨域API的經驗?也許這個呢?有更好的想法嗎?任何幫助表示讚賞,謝謝。

+0

由於我無法添加兩個以上的鏈接,所以下面是其餘的... 簡單的PHP代理:http:// benalman。 com/projects/php-simple-proxy/ ba-simple-proxy.php:https://raw.github.com/cowboy/php-simple-proxy/master/ba-simple-proxy.php Expensify API:https://www.expensify.com/api-services.html – mc5

+0

你真的會在這裏進入矯枉過正的模式。您不需要代理庫,只需使用CURL提出一個請求即可。 –

+0

我沒有太多的CURL經驗,你可以通過示例或其他方式來更具體嗎?不過,我現在要開始研究它。 – mc5

回答

0

您需要對URL進行編碼,因爲參數「partnerName」將傳遞到您的ba-simple-proxy.php腳本而不是api.expensify.com網站。我相信你正在尋找的功能是: encodeURI(uri)

+0

嗯,我試着在encodeURI()中的「url =」之後包裝所有東西,並仍然得到缺少的命令錯誤。 – mc5