返回信息流$(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请求数量也变得越来越多。。。 这是哪里出了问题。。求指点
或者怎么才是正确的操作,实现功能
这是一条镜像帖。来源:北邮人论坛 / java-script / #2057同步于 2017/4/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖
一次Post请求为什么为产生多次请求
ywg557
2017/4/22镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
哎,都是这种明明可以自己debug的问题,会调试也是很重要的,难道遇到问题就问同事?
你每次post success后都再执行一次init(),请问你有多少个modify按钮被事件委托了,都不用在电脑上调试,你的异步逻辑很混乱,一个init方法只是装装样子,其实boot init render bind destory 每个环节都是想到哪里写哪里,没一个整体的思路,所以才滥用init,导致多次绑定事件代理,清空html不意味着事件绑定关系被解除,特别是事件委托,post一次多一个modify按钮,当然post越发越多,总之基础薄,只会代理绑定,绑定关系概念不清晰,好好看看事件绑定的基础,还有调试能力有待提升,上述问题你要是都猜不到是多次绑定造成的,那以后你写代码可苦了,定位bug一关就够你忙一上午,不要说调试和修复了,效率不高,脑子不灵活,加班加死你
好不容易用了个高级点的delegate,还弄成点的越多,发得越多,说明你对事件委托只是懂皮毛,原理是模糊的,一个句简单的清空html,就把页面重绘了,仔细想想有必要每次都执行init么?首先这样字符串拼接就是个问题,另外是否每次render数据就够了,不用每次都把dom重新创建一遍吧,
页面只是随着数据变化而改变,看看mmvc框架是如何理解页面响应数据变化的,你就明白了你这样写代码其实事倍功半,另外写异步代码脑子要清晰啊,前端单线程就一个异步而已,每个环节该干嘛干嘛,别这么混乱啊,这要是写后端多线程,你还不写的痛不欲生?