Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp使用jquery动态添加/删除div并将数据保存在多个表中_Jquery_Cakephp 2.0 - Fatal编程技术网

Cakephp使用jquery动态添加/删除div并将数据保存在多个表中

Cakephp使用jquery动态添加/删除div并将数据保存在多个表中,jquery,cakephp-2.0,Jquery,Cakephp 2.0,我正在构建一个CakePHP2+web应用程序。我已经使用jquery实现了包含用户输入的动态添加/删除div,现在希望将收集的数据保存在多个表中(现在有两个表使用$belongsTo)。问题是我无法按需要保存数据。它也不会显示在调试或打印方法中。如果我在jquery或cakephp功能中出现问题,请任何人帮助我。我迄今为止所做的工作如下: JQuery <script language='javascript'> $(document).ready(function(){ var

我正在构建一个CakePHP2+web应用程序。我已经使用jquery实现了包含用户输入的动态添加/删除div,现在希望将收集的数据保存在多个表中(现在有两个表使用$belongsTo)。问题是我无法按需要保存数据。它也不会显示在调试或打印方法中。如果我在jquery或cakephp功能中出现问题,请任何人帮助我。我迄今为止所做的工作如下:

JQuery

<script language='javascript'>
$(document).ready(function(){
var i=1;
var chk=0;

$('.btnAdd').click(function(event){
var inputHtml = '<div class="invoice2_bottom_inner" id="divin"><div class="invoice2_bottom_1"><div id="divno" style="margin:53px 0 0;">1</div></div><div class="invoice2_bottom_delete"><button id="cls" class="close btnRemove">&times;</button></div><div style="float:left; height:auto;width:660px;margin:0;"><table class="table invoice2_payee"><tr><td>Date</td><td>Payee</td><td></td></tr><tr><td><select class="span2" name="data[Expense][date][month][]" id="ExpenseDateMonth"><option value="01">January</option><option value="02">February</option><option value="03">March</option><option value="04">April</option><option value="05">May</option><option value="06">June</option><option value="07">July</option><option value="08">August</option><option value="09">September</option><option value="10">October</option><option value="11">November</option><option value="12" selected="selected">December</option></select>-<select class="span1" name="data[Expense][date][day][]" id="ExpenseDateDay"><option value="01">1</option><option value="02">2</option><option value="03">3</option><option value="04">4</option><option value="05" selected="selected">5</option><option value="06">6</option><option value="07">7</option><option value="08">8</option><option value="09">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select>-<select class="span2" name="data[Expense][date][year][]" id="ExpenseDateYear"><option value="2032">2032</option><option value="2031">2031</option><option value="2030">2030</option><option value="2029">2029</option><option value="2028">2028</option><option value="2027">2027</option><option value="2026">2026</option><option value="2025">2025</option><option value="2024">2024</option><option value="2023">2023</option><option value="2022">2022</option><option value="2021">2021</option><option value="2020">2020</option><option value="2019">2019</option><option value="2018">2018</option><option value="2017">2017</option><option value="2016">2016</option><option value="2015">2015</option><option value="2014">2014</option><option value="2013">2013</option><option value="2012" selected="selected">2012</option><option value="2011">2011</option><option value="2010">2010</option><option value="2009">2009</option><option value="2008">2008</option><option value="2007">2007</option><option value="2006">2006</option><option value="2005">2005</option><option value="2004">2004</option><option value="2003">2003</option><option value="2002">2002</option><option value="2001">2001</option><option value="2000">2000</option><option value="1999">1999</option><option value="1998">1998</option><option value="1997">1997</option><option value="1996">1996</option><option value="1995">1995</option><option value="1994">1994</option><option value="1993">1993</option><option value="1992">1992</option></select></td><td><input class="input-medium" name="data[Expense][payee][]" maxlength="25" type="text" id="ExpensePayee"/></td><td></td></tr><tr><td>Type</td><td> Description</td><td>Amount</td></tr><tr><td><input class="span3" name="data[Expense][type][]" maxlength="25" type="text" id="ExpenseType"/></td><td><input class="input-medium" name="data[Expense][desc][]" maxlength="25" type="text" id="ExpenseDesc"/></td><td><span>$</span><input class="input-mini" name="data[Expense][amt][]" type="number" id="ExpenseAmt"/></td></tr></table></div></div>';

   chk=1;
  $('#divno').attr('id','divno'+i);
  $('#divin').attr('id','divin'+i);
  $('#cls').attr('id','cls'+i);
   $('#divno'+i).html(i);

        //alert(inputHtml);
    event.preventDefault();
$('<div />',{'class':'invoice2_bottom_inner1', id:'div'+(i+1)}).append(inputHtml).appendTo('.invoice2_bottom');
    //$('.invoice2_bottom').append(inputHtml);
    $('.btnRemove').show();
       //alert(i);

if(chk==1)
{
//alert(chk);
$('#divno').attr('id','divno'+(i+1));
$('#divno'+(i+1)).html(i+1);
$('#divin').attr('id','divin'+(i+1));
$('#cls').attr('id','cls'+(i+1));

chk=0;
}
i++;
        var c=$('#cls'+i).attr('id');
        $('#cls'+i).click(function(){
        $('#divin'+i).remove();
        //alert(c);
        if(c=='cls2'){$('.btnRemove').hide();}

        i--;
        });    

});
});
</script>
视图:

鉴于此,我使用包含用户输入的静态div来收集第一次加载页面时的数据,在jquery的帮助下,我根据Cakephp saveAll方法将其设置为数组,即0、1、2等等


关于

我可能会因为这个问题而被标记,所以请快速阅读,因为它与您最初的问题无关

简单克隆示例:

<div class="clone_handler" style="display:none;">
   <div class="some_class">
      <div>Some nested element</div>
   </div>
</div>

//JS
$(function(){
   var my_clone = $('.clone_handler').clone();
   $('body').prepend(my_clone.children('.some_class'));
});

某些嵌套元素
//JS
$(函数(){
var my_clone=$('.clone_handler').clone();
$('body').prepend(my_clone.children('some_class'));
});

您真的要将该DOM元素字符串存储在js变量inputHtml中吗?为什么不在文档中创建html标记并根据需要进行克隆?还有,为什么要在输入名称中添加额外的数组索引?数据[费用][收款人][]。删除最后一个[],这可能是您问题的根源。谢谢您的回复。无意中,在最后一个字段中给出了一个数组索引,实际上它类似于数据[Expense]['counter'][Paye],其中'counter'是'js'计数器。请你举个例子说明如何克隆它,因为我几乎什么都试过了,但没有成功。此外,我的视图中有inputHtml,可以在页面第一次加载时显示它,然后由jquery处理
<div class="clone_handler" style="display:none;">
   <div class="some_class">
      <div>Some nested element</div>
   </div>
</div>

//JS
$(function(){
   var my_clone = $('.clone_handler').clone();
   $('body').prepend(my_clone.children('.some_class'));
});