0

在网页上,我通过 Ajax 加载了一些内容。如果用户碰巧访问了加载 ajax 内容的实际页面,我希望它们被重定向到父页面本身。我以为我很聪明地使用了以下 javascript,它可以工作但看起来很狡猾,并且可能会与某个 url 中断:

$url = top.location.href;

if($url.indexOf('/events/') <= 0){
    window.location = site_url + "events/?event=" + id;
}

有没有更好的方法来做到这一点?如果这在 PHP 中是可能的,这将是可取的。

谢谢!

4

2 回答 2

0

请试试这个:

事件.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.";

?>

索引.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>

一种不同的方法可能是:

事件.php

<?php

if (!isset($_GET['a'])) {
    header("Location: index.html");
    exit;
}
echo "There are no events to display.";

?>

然后你可以用$('.test').load('events.php?a');.

请注意,无论您做什么,用户总是能够看到事件,如果 javascript 可以做到,他们也可以。

于 2013-05-24T06:16:58.883 回答
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);
        }
    }
}); 
于 2017-08-02T22:28:01.763 回答