在ajax中取消设置通过post传递的变量

Posted

技术标签:

【中文标题】在ajax中取消设置通过post传递的变量【英文标题】:unset a variable passed through post in ajax 【发布时间】:2014-09-04 11:41:30 【问题描述】:

我的 javascript 文件中有如下 ajax 代码:

// Default settings for Ajax requests
        $.ajaxSetup(
            type: 'POST',   
            url: path + '/relay.php'+ '?curr=' + currency + "&ver=" + Math.random(),
            success: function(response) 
                // Refresh the cart display after a successful Ajax request
                container.html(response);
                $('#jcart-buttons').remove();
            ,
               .......

以上将发布为(在萤火虫中):

POST http://www.myshop.com/cart/relay.php?curr=EUR&ver=0.5750630930208085

我有一个删除功能如下:

function remove(link) 
        // Get the query string of the link that was clicked
        var queryString = link.attr('href');
        queryString = queryString.split('=');

        // The id of the item to remove
        var removeId = queryString[1];

        // Remove the item and refresh cart display
        $.ajax(
            type: 'GET',
            data: 
                "jcartRemove": removeId,
                "jcartIsCheckout": isCheckout
            
        );
    

remove 会显示如下(firebug)

GET http://www.myshop.com/cart/relay.php?curr=EUR&ver=0.5750630&jcartRemove=5

我也需要删除 curr 变量...

我怎样才能在上面的删除链接代码中做到这一点???

【问题讨论】:

如果要删除它,为什么要添加它? NOT 将其放入您的 relay.php 脚本中开始使用不是更容易吗? @Marc B 我需要将 curr 变量传递到另一个页面.. 【参考方案1】:

更改 AJAX 方法,因为您正在从 URL 发送参数(这是发送参数的 get 方法)

$.ajaxSetup(
        type: 'GET',   
        url: path + '/relay.php'+ '?curr=' + currency + "&ver=" + Math.random(),
        success: function(response) 
            // Refresh the cart display after a successful Ajax request
            container.html(response);
            $('#jcart-buttons').remove();
        ,

$.ajax(
        type: 'POST',
        data: 
            "jcartRemove": removeId,
            "jcartIsCheckout": isCheckout
        
    );

这里是链接:

LINK AJAX


LINK POST
LINK GET

【讨论】:

抱歉,您提供的代码不起作用。删除链接停止工作 我向您展示了如何使用 ajax ...请概述您的代码并从命令中编写错误 我的问题是我需要在我的//删除商品并刷新上面的购物车显示功能中进行哪些更改。【参考方案2】:

1.您需要更改 $.ajaxSetup 方法,该方法中使用的 url 即 url: 路径 + '/relay.php'+ '?curr=' + 货币 + "&ver=" + Math.random() 包含 curr 和 ver 参数,但您不需要在 Remove Function 中使用 curr 变量因此您需要从此 url 中删除 curr 变量,并仅在需要它的特定 ajax 调用中添加 curr 变量。

2.默认情况下,您的网址应该是 url: 路径 + '/relay.php?ver=' + Math.random()

并使用 data 参数在后续的 ajax 调用中添加 curr 变量。

3.现在,当你调用remove函数时,默认查询字符串将不包含curr参数。

function remove(link) 
        // Get the query string of the link that was clicked
        var queryString = link.attr('href');
        queryString = queryString.split('=');

        // The id of the item to remove
        var removeId = queryString[1];

        // Remove the item and refresh cart display
        $.ajax(
            type: 'GET',
            data: 
                "jcartRemove": removeId,
                "jcartIsCheckout": isCheckout
            
        );
    

获取http://www.myshop.com/cart/relay.php?ver=0.5750630&jcartRemove=5&jcartIsCheckout=true 如果 isCheckout=true 获取http://www.myshop.com/cart/relay.php?ver=0.5750630&jcartRemove=5&jcartIsCheckout=false 如果 isCheckout=false

如果您有任何疑问,请发布。

【讨论】:

对不起..我不明白你的回答 我需要删除之前添加的当前在查询字符串中的 curr 变量。分裂时我该怎么办??

以上是关于在ajax中取消设置通过post传递的变量的主要内容,如果未能解决你的问题,请参考以下文章

通过 PHP -> Javascript -> AJAX - 选项传递变量?

将变量从 PHP 传递到 AJAX 成功函数

Php没有通过$ _POST接收变量

关于ajax data参数问题

如何取消设置全局变量。

PHP未设置会话不起作用