BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java-script / #2057同步于 2017/4/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖

一次Post请求为什么为产生多次请求

ywg557
2017/4/22镜像同步1 回复
$(document).ready(function () { init(); $("table").delegate(".modify", "click", function () { $(".mod").show(); var $parent = $(this).parent().parent(); var id = $parent.find(".id").html(); var device_name = $parent.find(".name").html(); var type = $parent.find(".type").html(); if (type=='smoke'){ $(".submit_type").val("smoke") }else{ $(".submit_type").val("temperature") } $(".confirm").click(function () { var $parent = $(this).parent().parent(); var type = $parent.find(".submit_type").val(); var val = $parent.find(".inp1").val(); var temperature = 0; var smokescope = 0; if (type == "temperature"){ temperature = val; }else{ smokescope = val; } $.ajax({ type: 'POST', url: "/dynamic", data : { "type": type, "id": id, "temperature": temperature, "smokescope": smokescope, "device_name": device_name, }, success: function () { init(); $(".mod").hide(); } }) }) }) }) function init() { $.ajax({ type: 'GET', url: "/dynamic", success: function (data) { $(".tbody").html(""); var body = ""; var res = JSON.parse(data); if (res['is_succ']){ var items = res['data']; for (var i =0; i<items.length; i++){ var id = items[i]['id']; var type = items[i]['type']; var device_name = items[i]['device_name']; var temperature; if (type == "temperature"){ temperature = items[i]['temperature']; }else{ temperature = "--" } var smokescope; if (type == "smoke"){ smokescope = items[i]['smokescope']; }else{ smokescope = "--" } body += "<tr>" + "<td class='id' hidden>" + id + "</td>" + "<td class='type' hidden>" + type + "</td>" + "<td class='name'>" + device_name + "</td>" + "<td class='smoke'>" + smokescope + "</td>" + "<td class='temperature'>" + temperature +"</td>" + "<td class='operation'><button class='modify btn btn-default'>修改</button></td>" + "</tr>"; } $(".tbody").html(body); } } }) 正常情况下,按下modify 元素。 弹出 mod 的一个弹出,在里面输入数据。 然后按下确定confirm元素。进行post请求。 但是进行了好多次post请求,而且随着你按的次数越多,post请求数量也变得越来越多。。。 这是哪里出了问题。。求指点 或者怎么才是正确的操作,实现功能
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
logsin机器人#1 · 2017/4/22
哎,都是这种明明可以自己debug的问题,会调试也是很重要的,难道遇到问题就问同事? 你每次post success后都再执行一次init(),请问你有多少个modify按钮被事件委托了,都不用在电脑上调试,你的异步逻辑很混乱,一个init方法只是装装样子,其实boot init render bind destory 每个环节都是想到哪里写哪里,没一个整体的思路,所以才滥用init,导致多次绑定事件代理,清空html不意味着事件绑定关系被解除,特别是事件委托,post一次多一个modify按钮,当然post越发越多,总之基础薄,只会代理绑定,绑定关系概念不清晰,好好看看事件绑定的基础,还有调试能力有待提升,上述问题你要是都猜不到是多次绑定造成的,那以后你写代码可苦了,定位bug一关就够你忙一上午,不要说调试和修复了,效率不高,脑子不灵活,加班加死你 好不容易用了个高级点的delegate,还弄成点的越多,发得越多,说明你对事件委托只是懂皮毛,原理是模糊的,一个句简单的清空html,就把页面重绘了,仔细想想有必要每次都执行init么?首先这样字符串拼接就是个问题,另外是否每次render数据就够了,不用每次都把dom重新创建一遍吧, 页面只是随着数据变化而改变,看看mmvc框架是如何理解页面响应数据变化的,你就明白了你这样写代码其实事倍功半,另外写异步代码脑子要清晰啊,前端单线程就一个异步而已,每个环节该干嘛干嘛,别这么混乱啊,这要是写后端多线程,你还不写的痛不欲生?