【发布时间】:2012-12-29 02:19:06
【问题描述】:
我正在尝试通过 php 代理(这个:https://raw.github.com/cowboy/php-simple-proxy/master/ba-simple-proxy.php)连接到一个站点,这是对响应执行某些操作的 JavaScript 函数:
编辑:代码现在看起来像这样。还是没有雪茄。
function exista(word) {
alert(word);
var proxy = 'ba-simple-proxy.php?url=';
var uri = "http://api.wordreference.com/0.8/ff175/json/roen/" + word;
uri = encodeURIComponent(uri);
alert(proxy + uri);
var cuvantulexista = 1;
jQuery.ajax({
"async": false,
"url": proxy + uri,
"dataType": 'json',
"method": "GET",
"success": function (data) {
alert("HERE!");
if (data.Error || data.Response)
cuvantulexista = 0;
}
});
return cuvantulexista;
}
php 文件与包含上述函数的 js 文件位于同一文件夹中,并且位于包含 html 文件的 public 文件夹中。
问题是我没有得到任何回应,我也说不清为什么。
我还像这样在 html 中包含了 php:
<?php
include("js/ba-simple-proxy.php");
?>
我很抱歉我的极端菜鸟,但这是我第一次使用 php 和跨域通信。谢谢你。 :)
编辑:如果有帮助,该页面不会托管在域上。
Edit2:所以,我在没有 --disable-web-security 的情况下打开了谷歌浏览器,我再次收到此错误:
XMLHttpRequest cannot load file:///home/bogdan/Scrabble-Online/public/ba-simple-proxy.php?url=http%3A%2F%2Fapi.wordreference.com%2F0.8%2Fff175%2Fjson%2Froen%2FRHE. Origin null is not allowed by Access-Control-Allow-Origin.
然而,如果我在 localhost 上启动它,它不会显示该消息。它只是不连接。我现在很困惑。
【问题讨论】:
-
而且,是的,我需要同步响应。 :)
-
您可能在某个地方遇到了 PHP 错误,请尝试打开完整的错误报告:
error_reporting(E_ALL | E_STRICT);。还要检查 JavaScript 控制台 - 是否有任何错误消息? -
你试过dataType:'jsonp'吗?我最近在一个代理项目上工作,我用 C# 编写了一个代理服务器,并使用通常的 HTML/CSS/JS (jQuery) 编写了一个 Web 界面。我发现了跨域请求的大量问题和怪癖。如果我没记错的话,我认为无法完成同步跨域请求。
-
控制台中没有错误信息。我想使用代理,这样我就可以获得 JSONP 无法提供的同步响应。
-
@Casteurr 好的,我误解了你的问题,我深表歉意。
标签: php javascript json proxy cross-domain