表单中需要未知的输入量,ajax-less替代?

时间:2009-08-19 20:39:30

标签: design-patterns mobile

我正在为移动设备编写一个小的webapp。

有一个表单要求提供特定项目及其详细信息,用户应该能够插入一个或多个项目及其详细信息。

如果它是一个普通的webapp我会使用带有链接“add one”的ajax,就像gmail对附件一样。在移动设备上我认为使用ajax不是一个好主意,所以我使用“我已经完成”和“添加更多”按钮来加载新页面,列表的其余部分保存在服务器端。这意味着对于用户需要重新加载页面的每个新项目,它很慢并且可能对我的用户来说成本更高。有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

您不应该在服务器端保存它;只需定期回发并在服务器上添加新的HTML - 但是将列表存储在返回的HTML中。

所以,例如简化的HTML最初是:

<form>
  <input name="info0" type="text" value="" />
  <input name="done" type="submit" value="I'm done" />
  <input name="more" type="submit" value="Add another" />
</form>

如果用户在“foo”中输入“info0”并选择“Add another”,则回发中返回的HTML现在将是:

<form>
  <input name="info0" type="text" value="foo" />
  <input name="info1" type="text" value="" />
  <input name="done" type="submit" value="I'm done" />
  <input name="more" type="submit" value="Add another" />
</form>

关键是在用户完成之前,您不会在服务器端保存任何内容。你可以用同样的方式进行删除,例如使用复选框或每个输入旁边的按钮。

答案 1 :(得分:1)

对不起,我误解了这个问题。我不明白为什么使用AJAX会是一个坏主意 - 只要它是unobtrusive AJAX,使用progressive enhancement的原则。 PE的整体理念是它可以在所有设备上运行。

  1. 使用像您一样的回发方法编写非AJAX解决方案。
  2. 添加不显眼的AJAX,防止发生回发,并将其全部异步。
  3. 对于启用了JS的用户,它可以很好地工作。对于那些不这样做的人来说,它仍然可以很好地工作,只需要回发。