在循环中使用window.location插入数据时的问题(GET方法)

时间:2014-05-14 11:27:22

标签: javascript jquery html node.js sails.js

我使用sailsjs从网址的GET参数中插入数据(mydomain.com/prod_master/addsupp)。

该页面是/ prod_master / addsupp,它接受GET参数插入数据库。

javascript中,我需要循环并插入多条记录 以下是我使用的javascript代码:

<script>
for(var i=2;i<(rCount);i++)
{
supplier=tbl.rows[i].cells[3].children[0].value;
del_lead_time=tbl.rows[i].cells[4].children[0].value;
min_qty=tbl.rows[i].cells[5].children[0].value;
window.location="/prod_master/addsupp?supplier="+supplier+"&del_lead_time="+del_lead_time+"&min_qua="+min_qty;
}
</script>

但是我可以确认使用我的网址mydomain.com/prod_master/addsupp?supplier=val&del_lead_time=val2&min_qua=val3将其完整地添加到数据库中 但是在循环中如果我使用window.location = url那么它就不起作用了。

任何解决方案?

注意:如果有任何jQuery解决方案,那么也让我知道。

1 个答案:

答案 0 :(得分:1)

在循环中,您无法使用window.location=url来调用任何网址并执行某项任务。因为javascript执行速度会比你想象的要快。一旦它在window.location中替换了URL,在下一个循环中它将替换它,它将与之前的调用冲突。

更好的方法是使用ajax调用来调用该URL。

我使用jQuery to do GET request.

给你psudo代码
<script>
for(var i=2;i<(rCount);i++)
{
    supplier=tbl.rows[i].cells[3].children[0].value;
    del_lead_time=tbl.rows[i].cells[4].children[0].value;
    min_qty=tbl.rows[i].cells[5].children[0].value;

    urlToCall="/prod_master/addsupp?supplier="+supplier+"&del_lead_time="+del_lead_time+"&min_qua="+min_qty;

    $.get(urlToCall, function(response){
      console.log(response); //you might want to see returned response
    });
}
</script>