代码之家  ›  专栏  ›  技术社区  ›  Dimskiy

使用AJAX向服务器提交搜索条件的最佳方法是什么?

  •  3
  • Dimskiy  · 技术社区  · 15 年前

    请考虑以下HTML:

    <input type='text' id='name'/>
    <option id='option'>
      <select value='1'>hi</select>
      <select value='2'>bye</select>
    </option>
    <input type='text' id='date'/>
    

    为什么? ?

    "John|2|2010-10-10" 
    

    去服务器,不然我就过去

    {"name":"John","option":2,"date":"2010-10-10"}
    

    也许有其他创造性的方法来处理搜索条件?这个标准只被发送到服务器一次,它不会返回到JS。

    4 回复  |  直到 8 年前
        1
  •  1
  •   David Hoerster    15 年前

    如果你把你的HTML包装成 <form> $.serializeArray()

    http://api.jquery.com/serializeArray/

    $.serializeArray() 以以下形式创建JavaScript对象文字:

    [ {name: a, value:1}, {name: b, value: 2}, ...]

    我相信这样做是因为表单可以有多个同名字段。关联数组不支持此操作。

    我建议您以JSON格式(使用 serializeArray 或者其他方法)而不是普通字符串。JSON更加标准化,可以处理转义字符。如果您使用的是以管道分隔的字符串,那么您必须考虑用户何时要提交管道( | ||** 在值之间。(我见过这个——真难看!)。坚持使用JSON。

    如果希望在请求正文中包含更像querystring的格式(例如a=1&b=2&c=3),可以使用 $.serialize() .

    http://api.jquery.com/serialize/

        2
  •  1
  •   Jacob Mattison    15 年前

    谷歌使用querystring,相当于:

    search?name=John&option=2&date=2010-10-10
    

    这有几个优点:

    • 搜索是GET请求而不是POST是适当的,因为它不会更改服务器上的状态
    • 它提供了一个简单的“穷人的API”,通过它可以非常简单地生成执行特定搜索的请求

    缺点:

    • 你必须对所有的东西进行URL编码

        3
  •  0
  •   Jerome    15 年前
        4
  •  0
  •   jAndy    15 年前

    最好创建自己的数据结构来传输数据。您可以100%按照您的需要和期望来设计格式,因此它体积小、速度快、效率高。

    第二个最好的选择是JSON,它已经非常轻量级和快速了。不过,没有哪种格式比得上你自己的。

    它的缺点很明显,既不兼容也不便携。所以你必须考虑到这一点。