我怎样才能使它成为一个“三脚”呢?在不重定向的情况下发出GET请求

How can I make <a href> make its GET request without redirecting?

本文关键字:三脚 重定向 GET 请求 情况下 一个      更新时间:2023-09-26

一些上下文:我正在使用Bigcommerce(它不支持PHP)来设计一个店面,并希望允许用户在结帐页面中添加产品,而不需要将他们重定向到购物车页面。我知道这是可能的,因为在首页上,有一些预编程的按钮,它们只是一些按钮样式的<a href="http://somestore.com/cart.php?action=add&product_id=9001">标签。它们拉出一个模态,最重要的是将产品添加到购物车 -都不需要重定向。

所以一开始这让我觉得这是一个简单的问题-只是$.ajax到页面并完成它,但后来我遇到了旧的Access-Control-Allow-Origin错误,这是奇怪的,因为我在同一域上编写我的Javascript,我试图击中,只有子域是不同的(/购物车vs/checkout)。我决定更深入地研究一下这个神奇按钮所提出的要求。这个请求的唯一不存在的请求头是X-Requested-With,我当然试图将其添加到我的XMLHttpRequest中,但没有成功。

我注意到的第二件事是一个额外的URL参数,它最初没有在源代码中列出,fastcart=1,所以我试着添加它,并被带到一个PHP页面,我显然不打算看到。大概有200行意大利面,我不确定能不能贴在这里。很明显,某个地方的脚本正在使用这个href并使用它来发出GET请求,但是如何呢?我试过XMLHttpRequestajax,但都给了我Access-Control-Allow-Origin的响应。

我看到过一种技术的使用,通过添加.click(function(e)来禁止<a href>上的页面重定向,并调用return falsee.preventDefault();,但这些根本不允许我的<a href>完成任何事情,更不用说一些忍者GET请求了。我的问题是,当一个简单的<a href>已经能够绕过SOP并几乎秘密地发出请求时,为什么我自己在GET请求到这个页面的尝试失败了。

显然,我将不得不花费更多的时间来查看PHP脚本,因为我被额外的参数所吸引。然而,事实证明,这是一个比我最初想象的更大的谜团,一路上教会了我很多东西。不幸的是,我还没有解决这个问题,我真的需要让这个功能工作。如果它对我的这些请求的来源有帮助,我将很高兴,但现在我已经没有时间了,必须休息一下。如果有人有更多的web开发经验可以帮助,我将非常感激!

您不必使用<a>标记,您所要做的就是在您想要使用的任何元素上添加事件侦听器,以便将商品添加到购物车中。例如,下面是一个按钮的代码,它将id为# 9001的产品添加到购物车中。

<style>
    .button {
        display: table-cell;
        width: 200px;
        height: 75px;
        color: #fff;
        background: #000;
        text-align: center;
        vertical-align: middle;
        cursor: pointer;
    }
</style>
<div class="button">Click Me</div>
<script type="text/javascript">
    $('.button').click(function () {
        $.ajax({type: 'GET', url: '/cart.php?action=add&product_id=9001'});
    });
</script>

基本上,制作你想要的元素,按照你想要的样式,然后添加一个.click()侦听器。

只需将产品id替换为您要添加的商店中的产品编号。