2011-04-18 90 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! 
}