2013-01-15 20 views
1

我試圖通過PHP代理連接到一個站點(這一個:https://raw.github.com/cowboy/php-simple-proxy/master/ba-simple-proxy.php),這是JavaScript函數做一些事的迴應:簡單的代理不能得到JSON響應

編輯:現在代碼看起來像這樣。仍然沒有雪茄。

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文件的公用文件夾。

問題是我什麼都沒有得到任何答覆,我真的不知道爲什麼。

我也包括像這樣在HTML的PHP​​:

<?php 
    include("js/ba-simple-proxy.php"); 
?> 

我爲我極端noobiness抱歉,這是我第一次用PHP和跨域通信工作。謝謝。 :)

編輯:頁面不託管在域上,如果有幫助。

EDIT2:所以,我打開谷歌瀏覽器,而不 - 禁用網絡的安全性,我再次得到這個錯誤:

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. 

然而,如果我開始它在本地主機上不顯示信息。它只是不連接。我現在非常困惑。

+0

而且,是的,我需要響應是同步的。 :) – Casteurr

+0

您可能在某處出現PHP錯誤,請嘗試打開完整的錯誤報告:'error_reporting(E_ALL | E_STRICT);'。還請檢查JavaScript控制檯 - 是否有任何錯誤消息? –

+0

你嘗試過dataType:'jsonp'嗎?我最近在一個代理項目上工作,我用C#編寫代理服務器,並使用通常的HTML/CSS/JS(jQuery)編寫Web界面。我發現了一個TON的問題和具有跨域請求的怪癖。如果我沒有記錯,我認爲無法完成同步跨域請求。 – mittmemo

回答

0

爲了讓您的目標頁面需要允許您訪問的交叉端請求:

header('Access-Control-Allow-Origin: *'); 

您可以在您的代理腳本的頂部添加此。更好地將*替換爲您的域名。

但是file:// URL無法被授權。所以你需要有一個真正的領域。

另請參閱https://stackoverflow.com/a/3744697/956397

+0

謝謝你的迴應。不過,就像我上面說的,如果我在本地主機上啓動頁面,使用SimpleHTTPServer,錯誤不再顯示。它只是不使用代理連接到wordreference api。 – Casteurr