0

我有这个 div,我把它用作一种按钮,大多数时候,我只是用它来重定向到另一个页面,但是这一次,我希望它在重定向到下一页之前运行一些 php。

<div class="build_detail_option_ele_wrap" onclick="location.href="builders_checkout.php";"></div>

我可以让它重定向到builders_checkout.php,它会创建一些会话等......然后从那里重定向到结束页面。

(我知道我可以通过使用提交按钮来更轻松地做到这一点,但情况意味着我不能在这里使用一个。)

这是一个好主意,还是这样做有负面影响?

谢谢

4

6 回答 6

2

它没有任何“错误”,但是如果您使用<a href="...">标签(可选地,设置style="display:block"为使其表现得像<div>),您会得到更好的结果。

如果您坚持使用 a <div>,请在字符串周围使用单引号builders_checkout.php

于 2012-09-10T19:42:03.393 回答
2

在您的 url 上传递一个查询字符串,其中包含您应该在该脚本之后重定向的页面。我用了下一个

 ... builders_checkout.php?next=lol_page.php ...

在你的builders_checkout.php,在你的脚本末尾使用类似这样的东西:

// if next is set, we will redirect it to next value (lol_page.php);
if(isset($_GET['next'])){
     header('Location: ' . $_GET['next']);
}

如果您有任何问题或问题要理解,请提出。

于 2012-09-10T19:44:25.030 回答
2

由于没有人实际给出(明显的)解决方案:

<a class="build_detail_option_ele_wrap" href="builders_checkout.php"></a>

将此添加到您的 CSS 中,它不会有明显的不同:

a.build_detail_option_ele_wrap {
    text-decoration: none;
    color: inherit;
    display: block;
}
于 2012-09-10T19:46:46.523 回答
1

好吧,使用 jQuery(甚至普通 JS)而不是onclick="". 当然,使用 an<a href="">而不是 div

到目前为止,没有任何问题。只要确保让用户知道它正在使用加载栏进行处理。

于 2012-09-10T19:41:06.077 回答
1

您是否建议这样做应该可以正常工作,但是您需要将声明中的双引号更改onclick为单引号,如下所示:

<div class="build_detail_option_ele_wrap" onclick="location.href='builders_checkout.php';"></div>

如果您想更高级,您可以考虑使用 AJAX 方法将您需要的数据发送到 PHP 脚本,然后仅当您成功执行该脚本需要执行的任何操作时才重定向(或者甚至让该脚本返回一个字符串指示浏览器应重定向到的位置)。

于 2012-09-10T19:48:01.217 回答
1

如果我认为您的要求是正确的,您可能需要考虑使用 AJAX。

jQuery 让这一切变得简单:

$(".build_detail_option_ele_wrap").on('click', function () {
    // Do your $_SESSION (or other) stuff
    $.get('builders_checkout.php', function () {
        // after the $.get has completed:
        window.location.href = 'lol_page.php';
    })
});

你的分区:

 <div class="build_detail_option_ele_wrap"></div>

这样,您可以异步运行“builders_checkout.php”,然后加载“lol_page.php” URL,而无需重定向两次。

于 2012-09-10T19:52:48.870 回答