【发布时间】:2014-07-08 14:22:15
【问题描述】:
简要说明...
我的站点中有一个可编辑的 jqWidgets 网格,但与传统的可编辑网格不同,我不想在编辑行时更新数据库,而是希望在按下“保存”按钮时立即更新整个网格。
考虑到这一点,我只能看到两种可能的选择:
- 以某种方式将整个网格对象字符串化为查询字符串并向服务器发送 1 个 AJAX 请求。
- 或者,遍历每一行并对网格中的每一行执行 AJAX 请求
我遇到的问题是,我根本无法弄清楚哪种方法更好,因为它们都有其复杂性。当用户试图通过 POST 请求传递网格的全部内容时,选项 1 上的查询字符串可能是天文数字并超出内存限制。但是,后一种解决方案可能会因为它正在为网格中的每一行执行 AJAX 请求而导致问题。想象一下,如果网格中有 100 行,甚至 1000 行!
我的问题
那么,任何人都可以想出一种有效的方法来实现这一点而不超出内存限制,同时又避免发出多个 AJAX 请求?
更多信息
如果上述内容不清楚,请考虑以下 javascript 数组:
[
{ name: 'Ben', age: 23, occupation: 'Developer' },
{ name: 'Charlie', age: 24, occupation: 'Receptionist' },
{ name: 'Jemima', age: 18, occupation: 'Designer' }
]
现在,尝试确定在一个查询中将所有这些信息传递给 PHP 的最佳方法吗?
【问题讨论】:
-
执行一个 AJAX 请求。 1000 行文本仍然仅在千字节范围内,您不会遇到内存限制。如果您真的担心效率,您应该想出一种方法,只为已更改的数据发送 AJAX 更新,而不是一次发送整个表。
-
@abmitchell 我打算过滤掉没有改变的行,但我仍然有字符串化数组的问题......任何指针?
-
同时 100 个 AJAX 请求将使任何浏览器都崩溃。如果您可以确保服务器上有足够的资源可用,那么您应该发送一个请求并且不等待它被处理。将其添加到处理队列。不过,您可以查看 websockets。那可能更聪明。
-
有 JSON.stringify 。
-
@BenCarey 照Sergiu 说的做,通过
JSON.stringify(yourArray),没必要再复杂了
标签: javascript php jquery ajax jqxgrid