我有一个使用jQuery.load
进行无限滚动的消息传递系统。问题是我设置它的方式,当jQuery.load
的响应返回时,页面中的所有JS都会再次运行。这很好,但我只想在请求是AJAX (jQuery.load
)的情况下禁用特定的JS块。
有可能做这样的事吗?
if(!request_is_ajax){
run_some_code();
}
else{
// do nothing
}
基本上,代码应该在主页面上运行,而不是在随后的调用中运行。我可以探测到服务器端,但那将是我最后的选择。
发布于 2014-04-30 03:22:32
一旦加载了所需的代码,就可以将全局js变量设置为false,然后在代码再次执行时检查是否为true。我不认为这里真的需要一个代码片段。
发布于 2014-04-30 03:17:25
对于随后的调用(即页面加载后的ajax调用),追加类似于Ajax或&ajax的内容,并在服务器端检查相同的内容,以确定请求是否为Ajax请求。
// a server side php code sample
$request_is_ajax= @$_GET['ajax']?true:false;
if(!$request_is_ajax){
run_some_code();
}
else{
// do nothing
}
发布于 2014-04-30 03:18:24
如果使用jQuery
,可以检查$_SERVER['HTTP_X_REQUESTED_WITH']
,它将被设置为XMLHttpRequest.
--这是使用jQuery
时最可靠的方法,因为XMLHttpRequest
是发出请求的JavaScript对象。不过,现在它的名字不太好,因为你可以让它发送你想要的任何东西。
示例代码:
/* decide what the content should be up here .... */
$content = get_content(); //generic function;
/* AJAX check */
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
/* special ajax here */
die($content);
}
/* not ajax, do more.... */
https://stackoverflow.com/questions/23386519
复制相似问题