當你說'外部'網址時,你指的是一個網站而不是這個網頁正在運行的網站嗎?如果是這樣,我最初的想法是,你遇到了一個Ajax調用的安全限制。
參見:http://en.wikipedia.org/wiki/Same_origin_policy
如果試圖使一個AJAX調用一個遠程服務器,它將執行沒有錯誤,但響應會回來完全空白。瀏覽器不會允許您使用響應來執行任何操作。我似乎回想起因爲它沒有成功或錯誤事件觸發而感到沮喪,因爲沒有讓jQuery做出決定。
你將需要將sites.php放在同一個站點上,或者創建一個本地php頁面來獲取遠程文件。如果你這樣做,那麼你的ajax調用可以從你的PHP腳本本地檢索遠程文件。
下面是一些代碼,我們用它來代理Ajax和UltraCart電話: (我們不是一個PHP店,所以我會愛,關於如何提高它的一些建議。) 我們在本地機器上安裝它,並用它來代理我們的ajax調用。
<?php
$server_get_url = "https://www.myremoteserver.com/somepage.php";
$post_data = file_get_contents('php://input');
foreach($_SERVER as $i=>$val) {
if (strpos($i, 'HTTP_') === 0) {
$name = str_replace(array('HTTP_', '_'), array('', '-'), $i);
$header[$name] = $val;
}
}
$header[] = "Content-Length: ". strlen($post_data);
$ch = curl_init($server_get_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
if (strlen($post_data)>0){
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
$response = curl_exec($ch);
if (curl_errno($ch)) {
print curl_error($ch);
} else {
curl_close($ch);
// our page returns back json ... you may need to adjust this.
header('Content-type: application/json');
print $response;
}
?>
它只適用於該文件來自的服務器。當您從ABC.com(localhost)加載文件時,您是否嘗試訪問XYZ.com? – SuperSaiyan 2012-07-15 04:53:22
這違反了[同源策略](http://en.wikipedia.org/wiki/Same_origin_policy) – Musa 2012-07-15 04:55:41
@Thrustmaster我試圖從XYZ.com訪問ABC.com(localhost)。例如,我在$ .ajax之前添加了警報,併發出警報。所以我只是試圖訪問文件中的另一個文件$ .ajax駐留在。 – hellomello 2012-07-15 04:58:21