我使用redips.net table drag and drop table rows创建了一些有效的jQuery代码。
我在我的模板中使用它如何工作,但现在“保存”我需要为我移动的数据生成一个JSON字符串,然后将其写入我的数据库(很简单)但是我是什么需要帮助的是如何从我的网页中提取数据,然后将其保存到我的数据库中。
我目前的模板是:
<script type="text/javascript" src="/static/js/redips-drag-min.js"></script>
<div id="drag">
{% for vehicle in vehicles %} <!-- List the vehicles available -->
<table class="listing" id="{{ vehicle.id }}">
<colgroup><col width="100"/><col width="120"/><col width="480"/><col width="100"/><col width="100"/></colgroup>
<tr>
<th class="mark">{{ vehicle.reg }}</th>
</tr>
<tr>
<div id="drag">
{% for vehicle in vehicles %} <!-- List the vehicles available -->
<table class="listing" id="{{ vehicle.id }}">
<colgroup><col width="100"/><col width="120"/><col width="480"/><col width="100"/><col width="100"/></colgroup>
<tr>
<th class="mark">{{ vehicle.reg }}</th>
</tr>
<tr>
<th class="mark"> </th>
<th class="mark">Account #</th>
<th class="mark">Customer</th>
<th class="mark">Order #</th>
<th class="mark">Order Weight</th>
</tr>
<tr>
<td class="rowhandler"><div class="drag row"></div> </td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<!-- want items to be dropped as rows in here -->
</table>
{% endfor %}
<table class="listing">
<colgroup><col width="100"/><col width="120"/><col width="480"/><col width="100"/><col width="100"/></colgroup>
<tr>
<th class="mark">Collections</th>
</tr>
<tr>
<th class="mark"> </th>
<th class="mark">Account #</th>
<th class="mark">Customer</th>
<th class="mark">Order #</th>
<th class="mark">Order Weight</th>
</tr>
{% for order in orders %}
<tr>
<!-- rows should be able to get dropped into any vehicle table -->
<td class="rowhandler"><div class="drag row"></div> </td>
<td>{{ order.oh_custaccref }}</td> <!-- and then into any other table (if required) -->
<td>{{ order.name }}</td>
<td>{{ order.oh_orderno }}</td>
<td>{{ order.oh_orderwgt }}</td>
</tr>
{% endfor %}
</table>
</div> <!-- end drag -->
<form id="myform">
<ol id="drop_list">
</ol>
<input id="save_button" type="button" value="Save" class="button" onclick="redips.save()" title="Save form"/>
</form>
所以我需要帮助的是如何将这些表中的数据转换为JSON字符串,以便我可以使用Pyramid对其进行操作。我无法找到任何直接帮助我的东西,我有非常基本的JavaScript / jQuery知识(以及AJAX),所以如果我尝试错误的方法或产生混乱的代码,我会道歉。
答案 0 :(得分:1)
嗯,最简单的方法是将表移动到表单标记内,并为每行添加一个带有唯一ID的隐藏输入:
<td>{{ order.oh_custaccref }} <input type="hidden" name="row_id" value="{{ order.oh_custaccref }}"</td>
然后,当您提交表单(不需要JavaScript技巧)时,row_ids将按照它们在表中的顺序发送。在表单提交处理程序中,您将能够使用
获取这些值row_ids = request.GET.getall('row_id')
(有关解释,请参阅MultiDict。)
这种方法不会向服务器发送JSON,只是正常的表单提交,但它允许您最小化您不熟悉的JavaScript / jQuery / AJAX的使用。