在网页上我通过Ajax加载了一些内容。如果用户碰巧访问了加载ajax内容的实际页面,我希望将它们重定向到父页面本身。我认为我对跟随javascript很聪明,它有效,但似乎很狡猾,可能会打破某个网址:
$url = top.location.href;
if($url.indexOf('/events/') <= 0){
window.location = site_url + "events/?event=" + id;
}
有更好的方法吗?如果在PHP中这是可能的,那么这将是更可取的。
谢谢!
答案 0 :(得分:0)
请试试这个:
events.php
<?php
if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
header("Location: index.html");
exit;
}
echo "There are no events to display.";
?>
的index.html
<!DOCTYPE html>
<html>
<head>
<title>Events</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
</head>
<body>
<div class="test"></div>
<script>
$('.test').load('events.php');
</script>
</body>
</html>
不同的方法可能是:
events.php
<?php
if (!isset($_GET['a'])) {
header("Location: index.html");
exit;
}
echo "There are no events to display.";
?>
然后您可以$('.test').load('events.php?a');
请求。
请注意,无论您做什么,用户始终都能看到事件,如果javascript可以执行此操作,他们也可以。
答案 1 :(得分:0)
试试这个:
$.ajax({
type: "POST",
url: reqUrl,
data: reqBody,
dataType: "json",
success: function(data, textStatus) {
if (data.redirect) {
// data.redirect contains the string URL to redirect to
window.location.href = data.redirect;
}
else {
// data.form contains the HTML for the replacement form
$("#myform").replaceWith(data.form);
}
}
});