jQuery拖放+金字塔+ Ajax

时间:2012-11-12 16:13:09

标签: ajax json jquery pyramid

我使用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),所以如果我尝试错误的方法或产生混乱的代码,我会道歉。

1 个答案:

答案 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的使用。