2011-04-18 88 views
0

當頁面調用正常時調用ajax是否有區別? 我的意思是我怎麼能找出一個頁面調用ajax或直接調用?php ajax和普通頁面的區別

+0

可能重複[檢測的Ajax調用URL](http://stackoverflow.com/questions/3124636/detect-ajax-calling-url) – 2011-04-18 15:53:04

回答

0

爲了區分正常的頁面加載和AJAX加載......有些可能會編碼到JS變量中傳遞給指示AJAX的PHP頁面。這可以讓你修改輸出爲JSON或任何你想做的事情。

其他人使用單獨的php腳本進行AJAX。

但是,有很多方法可以解決這個問題。更詳細的信息,如果你有問題,但這些可能是最簡單的。

編輯:如果您沒有看到作爲主註釋發佈的URL可能重複。這應該只回答你關於識別ajax請求的問題。

最知名的Ajax框架,如 jQuery和MooTools的添加特定的 頭,你可以用PHP檢查:

if (strcasecmp('XMLHttpRequest', $_SERVER['HTTP_X_REQUESTED_WITH']) === 0) 
{ 
    // Ajax Request 
} 
+0

這麼認爲我添加一個額外的變量時,我想使用AJAX(財產以後像ajax = true)它是安全的方式嗎?當我使用ajax函數輸出將作爲JSON編碼回顯,並且它不是很好,當任何人寫URL並在URL的末尾追加「ajax = true」時請參閱編碼json代碼!比這種方式安全嗎? – Hamid 2011-04-18 18:25:35

+0

我不是100%確定的,但我個人不會擔心人們故意轉到JSON URL時意外看到JSON。這將允許您在需要時測試您的代碼,並且您不應通過JSON響應提供任何正常頁面請求中未提供的有意義的數據 - 不要假設用戶無法看到它,導致這總是可能的。您可能會考慮在AJAX請求中使用POST而不是GET,這會讓人們更難以通過瀏覽器URL使用GET意外訪問它。祝你好運! – 2011-04-19 12:20:14

0

您可以將參數添加到通話,例如:

xmlhttp.open("GET","page.php?request=ajax",false); 

,然後檢查它在PHP:

if($_GET['request'] == 'ajax'){ 
    //this was called by ajax! 
}