2013-04-14 40 views
2

我有一個使用的file_get_contents然後我解碼返回的JSON的腳本...AJAX和的file_get_contents

$urlone = json_decode(file_get_contents("http://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=false&screen_name=".$screen_name."&count=".$tweet_count."&page=1"),true); 

我想實現的是一個回調,所以我可以有一個很好的裝載機,然後動畫內容在完成時。有沒有辦法使用JQuery做一個AJAX調用,如果啓用了Javascript並且在默認PHP被禁用的情況下回退到默認PHP?

+0

有爲什麼一個已禁用JavaScript的人的後備? –

+0

我想使用PHP檢索數據,因此即使JS被禁用,但我想優化我的腳本以使用AJAX,因此不會刷新頁面。問題是file_get_contents不支持AJAX調用。我需要一種解決方法,即讓JQuery AJAX調用返回一個POST變量,並在AJAX成功時用PHP執行,或者運行PHP函數,如果JS被禁用,現在我有。謝謝 – cfb

回答

1

你可以做的是:

  • 確認JS是在先前請求啓用。如果啓用鏈接到PHP文件,這取決於JavaScript啓用。如果沒有,鏈接到直接顯示輸出的php文件。您可以通過Meta重定向和Javascript的組合來實現這一點。
  • 或者在iframe中直接輸出php文件,該文件位於<noscript>標記中,屬於執行jquery的標記。
在第一個選項,你將不得不file.php鏈接要麼fileWithJs.php或fileWithoutJs.php

在第二個選項,你會有這樣的事情

<script> 
    // jquery here 
</script> 
<noscript><iframe src="data.php"></iframe></noscript> 
+0

我發現CURL函數使用file_get_contents的instaed ... // CURL函數替換file_get_contents 函數file_get_contents_curl($ url){chrome = curl_init();} curl_setopt($ ch,CURLOPT_HEADER,0); curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1); //設置curl返回數據而不是打印到瀏覽器。 curl_setopt($ ch,CURLOPT_URL,$ url); $ data = curl_exec($ ch); curl_close($ ch); return $ data; } – cfb

2

PHP不知道用戶在處理來自用戶的請求時是否啓用了JavaScript,至少不是第一次請求。

通常你會假設用戶沒有JavaScript並且從那裏得到增強,但是當你想'回退'到PHP時,無論用戶是否具有JavaScript功能,你都需要呈現JSON,所以使用JavaScript會現在只需要您(和用戶)已經擁有數據就沒有意義了。

+0

對不起。回退是錯誤的短語。這僅適用於PHP。我需要使用JQuery進行增強。 – cfb