2015-09-14 117 views
0

更新:此問題已解決,我的問題是一個錯字。我在做什麼的概念是正確的。使用php file_get_contents()在使用ajax時不起作用

我檢查圖像是否在第一次顯示我的頁面時退出。它打印出來:

if (@file_get_contents($url) != false) 
{ 
    // show URL 
} 
else { 
    // Show Placeholder Image 
} 

此代碼的工作原理,當我有我的網頁第一次加載和PHP編寫的HTML。

但在其他場合,當我做一個jQuery .post.get調用(所以基本上ajax)做上面的文件檢查總是失敗。我已經打印出URL並指向正確的文件(我可以通過解除錯誤來解決這個問題)。現在,url是一個不同的域,然後是被調用的原始文件,所以不知道它是否是跨域問題(它也是屬於我的網站,所以我可以完全訪問這些文件)。

由於ajax,此代碼無法工作嗎?跨域?別的東西?

另外,我試過file_existsgetimagesizecUrl以及無濟於事。

編輯:

這是我的消息時錯誤不會抑制:

警告:file_get_contents(http://www.---.---) [function.file-GET-內容]:未能打開流:HTTP請求失敗! HTTP/1.1 404未找到---在線352

+0

你的ajax腳本與這個文件位於同一個文件夾中嗎? –

+0

我不確定你的意思是「這一個」。我的'index.php'代碼工作在主文件夾中。我的ajax位於名爲'js/myscript.js'的根目錄下。 jQuery ajax調用位於根(index.php的同級)中的文件。 – KickingLettuce

+0

嘗試將它們放在同一個文件夾中 –

回答

1

如果PHP在這種情況下失敗,請嘗試使用jQuery來實現相同的結果。在SO上有另外一個答案,它有一個小功能:它檢查url是否指向現有的文檔或文件,並返回它的HTTP代碼。

https://stackoverflow.com/a/9377204/536425

async: falseasync: true試試吧兩者,看看哪一個沒有工作適合你。

+1

由於AJAX需要相同的域名,如果圖像與網頁位於不同的域中,這將不起作用。 – Barmar

+0

@Barmar OP可能能夠添加適當的CORS標題,因爲他們提到遠程站點屬於他們 – Phil

+0

這可能是困難的,因爲我需要循環訪問列表並根據數據庫結果構建我的html服務器端。如果我只需要檢查一張圖片,我會試試這個, – KickingLettuce