账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    使用JS(JQ)出现重复POST的怪异情况
    50
    0

    在项目中自己设定了一个功能类似js原生confirm的功能,主要是给用户在操作的时候做二次确认,这个提示结构大致如下:

            <div>
                <div>
                    <ul>
                        <li id="tsy1">提示语1</li>
                        <li id="tsy2">提示语2</li>
                        <li id="tsy3">提示语3</li>
                    </ul>
                </div>
                <div>
                    <ul>
                        <li id="cancel">取消</li>
                        <li id="yes">确定</li>
                    </ul>
                </div>
            </div>    

    这个是全站公用的,需要的时候就通过调用函数让它显示并传入对应的提示语之类的,通用调用函数大致如下:

    function show(tsy1,tsy2,tsy3){
        document.getElementById("tsy1").innerHTML=cf1;
        document.getElementById("tsy2").innerHTML=cf2;
        document.getElementById("tsy3").innerHTML=cf3;
    };
    

    调用 show("提示语1","提示语2","提示语3"); 显示对应提示,然后用

    $('#yes').click(function() {}

    向后台POST数据


    出现的问题情况是这样的:

    当我因某个操作调用到这个函数时,那么上面的HTML就显示了(通过CSS的display属性控制),会有“取消”和“确定”两个按钮可选择,正常情况就是我点击“确定”就Ajax向后台POST数据然后返回对应结果

    但是

    假如我手贱,我调用这个函数后,我没点击“确定”,而是点击了“取消”,然后我再次调用这个函数,再点击“取消”,然后我再次调用这个函数,再点击“取消”,然后我再次调用这个函数,再点击“取消”.....

    如此反复调用反复取消N次之后,我才点击“确定”,奇怪的是发生了,这时点击“确定”就向后台POST了N次!!!

    为啥会这样呢?

    难道是每次调用函数的时候都新增一个"id=yes"?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 楼兰一梦 普通会员 1楼

      在使用JS(JQ)处理POST请求时,可能会遇到重复POST的情况。这种问题通常是由于你的POST请求中包含了重复的参数或者在请求体中包含了重复的键值对导致的。

      以下是一些可能的解决方案:

      1. 使用JSON.stringify()函数将参数转换为JSON字符串。这样可以确保参数中的键和值是唯一的,不会出现重复的键值对。

      ```javascript var obj = { key1: 'value1', key2: 'value2', key3: 'value3' };

      var jsonStr = JSON.stringify(obj); ```

      1. 在POST请求中使用key作为唯一的参数名。这样可以确保请求体中的每个键都只能有一个对应的值。

      ```javascript var key = 'key'; var obj = { key1: 'value1', key2: 'value2', key3: 'value3' };

      var jsonStr = JSON.stringify({key: key}); ```

      1. 使用JSON.parse()函数将JSON字符串转换为对象。这样可以确保对象中的每个键都只能有一个对应的值。

      javascript var obj = JSON.parse(jsonStr);

      1. 使用Array.from()函数将对象转换为数组。这样可以确保数组中的每个元素都只能有一个对应的值。

      javascript var arr = Array.from(obj);

      1. 使用URLSearchParams对象来处理POST请求。URLSearchParams对象可以将键值对作为参数,然后使用Array.from()函数将结果转换为数组。

      javascript var params = new URLSearchParams(); params.append('key', 'value'); var arr = Array.from(params.entries());

      希望以上的解决方案能够帮助你解决重复POST的问题。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部