2009-04-26 41 views
9

我一直在試圖向外部服務器發出ajax請求。 到目前爲止,我已經瞭解到,由於安全原因,我需要使用getJSON來做到這一點?Jquery getJSON到外部PHP頁面

現在,我似乎無法對外部頁面進行簡單的調用。 我試圖儘可能簡化它,但它仍然無法正常工作。 我有2個文件,test.html的& test.php的

我的test.html做這樣的呼籲,爲localhost來進行測試:

$.getJSON("http://localhost/OutVoice/services/test.php", function(json){ 
    alert("JSON Data: " + json); 
}); 

,我想我的test.php返回一個簡單'測試':

$results = "test"; 
echo json_encode($results); 

我可能會做出一些令人難以置信的菜鳥的錯誤,但我似乎無法弄清楚。 此外,如果這個工程,我怎麼可以發送數據到我的test.php頁面,就像你會像test.php?id = 15?


的test.html的網頁呼籲localhost上test.php的頁面,同一目錄 我沒有得到任何錯誤,只是沒有警報..

+0

什麼是提出請求的頁面。我想確保你沒有跨域安全問題。 – bendewey 2009-04-26 14:20:19

+0

你會得到任何錯誤? – SilentGhost 2009-04-26 14:23:09

+0

的test.html的網頁呼籲localhost上test.php的頁面,同一目錄 我沒有得到任何錯誤,只是沒有警報.. – Pmarcoen 2009-04-26 14:27:53

回答

16

可能是你的避風港在test.php中沒有回調。當您使用http://

$results = array("key" => "value"); 
echo $_GET['callback'] . '(' . json_encode($results) . ')'; 
// the callback stuff is only needed if you're requesting from different domains 

jQuery的自動切換到JSONP(即,使用腳本標籤而不是XMLHttpRequest):此外,json_encode只接受的陣列。如果您在同一個域中有test.html和test.php,請嘗試使用相對路徑(並且沒有回調)。

2

最簡單的解決方案是將下面的代碼添加到test.php文件的任何輸出之前,然後您可以更靈活地使用您使用的方法,標準ajax調用應該可以工作。

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

但是,當您從超出控制範圍的服務器獲取數據時,請使用json回調函數。