0

我使用redips.net 表拖放表行创建了一些工作 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),所以如果我尝试了错误的方法或产生了混乱的代码,我深表歉意。

4

1 回答 1

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

于 2012-11-13T06:08:05.610 回答