2012-05-20 40 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