用于动态表数据的jQuery AJAX POST到mysql表 – 我是否以正确的方式执行此操作?
我有一个表,我可以动态添加和删除任意数量的行。 一旦数据全部由用户输入,我使用jQuery AJAXfunction将其POST到mysql数据库,因此没有页面重定向或刷新。
我能想到让它工作的唯一方法是在我的jQuery中使用这个for循环,有效地将每一行分别发布到数据库。 这有多笨? 我应该获取所有表数据并将其发布一次吗? 用户可以有任意数量的行,用户可以在提交之前尽可能多地添加和删除行。
奇怪的i变量计数是由于表顶部有第二行。 我无法巧妙地做到这一点。
我总是与正确的行相关联的数据有点偏执。
感谢您的时间。
jQuery(function() { jQuery(".button1").click(function() { // process form here var rowCount = jQuery('#dataTable tr').length; for (var i = 2; i < rowCount; i++){ // the four elements of each row I am storing to the mysql var txtRow1 = jQuery('#txtRow' + (i-1)).val(); var tickerRow1 = jQuery('#tickerRow' + (i-1)).val(); var quantRow1 = jQuery('#quantRow' + (i-1)).val(); var valueRow1 = jQuery('#valueRow' + (i-1)).val(); var dataString = 'txtRow1='+ txtRow1 + '&tickerRow1=' + tickerRow1 + '&quantRow1=' + quantRow1 + '&valueRow1=' + valueRow1; //alert (dataString);return false; jQuery.ajax({ type: "POST", url: "http://rccl.co.uk/form_action1.php", data: dataString }); }; return false; }); });
它看起来非常清楚,好像你有一个完善的行的索引,使用你的变量i 。 大多数表单处理程序服务器端会将表单的重复键解压缩到一个列表中,例如许多具有相同名称的复选框。 你可以在这里利用它。
datastring = ''; for(var i=2; i
然后使用整个字符串进行ajax调用。
在服务器端,您应该为每个这些获取数组,每个数组的第一行对应于第一行,第二行中的第二行对应于第二行,依此类推。
自从我使用PHP以来已经有很长一段时间了,但我相信每个关键项的[]
符号都是必要的,以便知道它应该将各种键的内容转换为数组的$_POST
。
我会尝试一次发布所有内容。
原因
- 呼叫次数减少,邮件丢失的可能性降低(您的服务器因洪水而拒绝请求)
- 您不必担心请求无序响应(可能不是问题,但有一堆混乱的响应可能是一个问题)
- 大量行一次保存会更快