2013-03-27 60 views
0

我有一个列表框,用户可以在其中添加,删除和更新并保存列表。一旦点击了保存按钮,我正在调用jquery在列表框中构建元素数组,然后使用隐藏的INPUT元素进行POST。但是我得到一个空的数组PHP POST。这里是jQuery的使用隐藏的输入元素发布到php脚本的动态jQuery数组

$("#saveCategory").click (function() { 
    var items = $("#jqxlistbox").jqxListBox('getItems'); 
    var length = items.length; 
    var mylist = new Array(); 
    for (var i = 0; i < length; i++) { 
     var row = {}; 
     row["cname"] = items[i].value; 
     row["cvalue"] = items[i].label; 
     mylist[i] = row; 
    } 
    $("#myCatgories").value(mylist); 
}); 

这里是我的html表单

<form id="addcategory" method="post" action="index.php"> 
<div style="float: left"> 
    <input type="button" value="Add" id="addCategory" style="margin-left: 3px" /> 
     <input type="button" value="Update" id="updateCategory" style="margin-left: 3px" /> 
     <input type="button" value="Delete" id="deleteCategory" style="margin-left: 3px" /> 
     <br />            
     <input type="submit" value="Save" id="saveCategory" style="margin-left: 3px" /> 
    </div> 
    <div> 
    <input type="hidden" name="myCatgories[]" id="myCatgories" value=""> 
</div> 

有人可以告诉我什么,我做错了什么,并把在正确的方向。

感谢

回答

2

尝试下面的代码(有你的数组初始化的问题),并.value的()是不正确的方法JQ,它应该是.val()

$("#saveCategory").click (function() { 
    var items = $("#jqxlistbox").jqxListBox('getItems'); 
    var length = items.length; 
    var mylist = []; 
    for (var i = 0; i < length; i++) { 
     var row = []; 
     row["cname"] = items[i].value; 
     row["cvalue"] = items[i].label; 
     mylist[i] = row; 
    } 
    $("#myCatgories").val(mylist); 
}); 

如果这并未没有工作,我建议使用console.log(mylist)console.log(items)以确保您抓取的是数据而不是空的字段。

+0

我检查并获取数据。问题是$(“#myCatgories”)。value(mylist);它给这个错误.Value不是函数 – Aamer 2013-03-27 19:42:44

+0

TypeError:$(...)。value不是函数 $(“#myCatgories”)。value(mylist); 这是控制台上的完整错误消息。 – Aamer 2013-03-27 19:58:25

+0

我将其更改为$('#myCatgories')。value = mylist; 错误消失了,但仍然是POST中的空数组。任何评论 – Aamer 2013-03-27 20:26:37

0

变化从提交按钮,并在其click事件的输入型......通过使用submit()

SUMIT形式试试这个

HTML

<input type="button" value="Save" id="saveCategory" style="margin-left: 3px" /> 

jQuery的

$("#saveCategory").click (function() { 
    var items = $("#jqxlistbox").jqxListBox('getItems'); 
    var length = items.length; 
    var mylist = new Array(); 
    for (var i = 0; i < length; i++) { 
    var row = {}; 
    row["cname"] = items[i].value; 
    row["cvalue"] = items[i].label; 
    mylist[i] = row; 
    } 
    $("#myCatgories").val(mylist); 
    $('#addcategory').submit(); //<-- submit you form here 
}); 
+0

我不知道为什么你需要将它从'submit'更改为'button'。onclick JS会首先执行,不管输入类型如何,如果你不想因错误提交表单,你总是可以'返回false;'。我在这里丢失了什么? – Moses 2013-03-27 18:31:48

+0

我改变了在POST中获得一个空数组也必须将第二行最后一行更改为 $('#myCatgories')。value = mylist; 以摆脱错误 – Aamer 2013-03-27 20:27:55