【问题标题】:Edit a CodeIgniter + AJAX multi-part form by showing all inputs to be changed通过显示所有要更改的输入来编辑 CodeIgniter + AJAX 多部分表单
【发布时间】:2013-02-24 13:33:22
【问题描述】:

概述

这是我第一次使用 CodeIgniter 创建复杂的多部分表单。

我有一个依赖 AJAX Post 提交的 CodeIgniter 多部分表单(使用 jQuery Form Plugin)。我在成功验证用户后预览表单,以检查他们的答案是否一切正常。他们可以通过提交到数据库按钮或编辑表单按钮将其提交到数据库,然后返回并更改他们想要检查的任何内容,然后循环再次开始!

问题

我的多部分表单具有文件输入和动态添加的 DOM 元素(例如,用户可以声明多个地址,因此将通过 JavaScript 添加四个文本框),我希望这些是完整的编辑被点击。

我有几种攻击方法,但目前都没有:

  1. 模拟浏览器的后退按钮 - 看起来很有效,但我记得我的控制器的 index() 会加载新的表单视图,所以它没用。
  2. 从预览表单中取出所有数据,放入一个数组中,将数组带到index(),统计动态添加元素的出现次数,然后全部显示 - 这个很漂亮对我来说乏味而复杂。另外,我不确定将所有 $_POST 数据传送到数组中是否安全,但这是我能想到的最好的。

你们有什么建议或更好的方法来攻击这种过程吗?

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: php javascript ajax forms codeigniter


    【解决方案1】:

    您可能需要根据您的第二个选项实施解决方案 - 是的,这很乏味,但没有其他方法可以做到这一点。需要记住的一些事情:

    您需要想出一种简洁的方式来存储您的数据。地址应存储为一个数组元素,如下所示:

    <input type="text" name="addresses[1][street]">
    <input type="text" name="addresses[1][city]">
    <input type="text" name="addresses[1][county]">
    

    这将允许您简洁地迭代您的数据结构以进行前端演示:

    <? foreach ($data['addresses'] as $number => $address): ?>
       <? foreach ($address as $address_item => $value): ?>
          <input type="text" name="addresses[<?=$number?>][<?=$address_item?>]" value="<?=$value?>">
       <? endforeach; ?>
    <? endforeach; ?>
    

    这将提供对您的布局的完全控制,减少您必须用于存储 DOM 的 JavaScript 数量(这不是那么快速或高效)。

    【讨论】:

    • 谢谢!我想我真的必须这样做:D
    猜你喜欢
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2015-04-11
    相关资源
    最近更新 更多