2

您好我正在尝试从仅返回 JSON 而不是 JSONP 的 api 获取数据。每次我尝试将数据连接为 JSONP 时它都不起作用,因为我不期待 JSON。所以,我想我必须使用 PHP 代理来解决跨域问题,这样我才能解释 JSON 请求。[简单的 PHP 代理][1] 是我正在尝试使用的代理,但我正在努力让最基本的功能正常工作。当我在示例页面上将要查询的 url 输入到他的示例中时,它可以工作。当我这样做时,它不会,有时我会收到“缺少命令”(API 告诉我争论太多或太少的方式)或 httpcode/jsoncode 404。

Expensify 是我正在查询的 API。我首先尝试 Authenticate 命令。如果您在浏览器中键入此 URL,您会得到我想要的结果: https ://api.expensify.com?command=Authenticate&partnerName=applicant&partnerPassword=d7c3119c6cdab02d68d9&partnerUserID=expensifytest%40mailinator.com&partnerUserSecret=hire_me

使用简单 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 的经验?甚至可能是这个?有更好的想法吗?任何帮助表示赞赏,谢谢。

4

1 回答 1

0

您需要对 URL 进行编码,因为参数“partnerName”将传递给您的 ba-simple-proxy.php 脚本,而不是 api.expensify.com 网站。我相信你正在寻找的功能是:encodeURI(uri)

于 2012-05-20T17:03:59.270 回答