jQuery数据表格插件 - 如何在服务器端获取查询字符串的值?

我有一个查询字符串,是由我的dataTable创建的:

http://testserver/cgi-bin/widget?draw=1&columns%5B0%5D%5Bdata%5D=0&columns%5B0%5D%5Bname%5D=&columns%5B0%5D%5Bsearchable%5D=true&columns%5B0%5D%5Borderable%5D=true&columns%5B0%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B0%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B1%5D%5Bdata%5D=1&columns%5B1%5D%5Bname%5D=&columns%5B1%5D%5Bsearchable%5D=true&columns%5B1%5D%5Borderable%5D=true&columns%5B1%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B1%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B2%5D%5Bdata%5D=2&columns%5B2%5D%5Bname%5D=&columns%5B2%5D%5Bsearchable%5D=true&columns%5B2%5D%5Borderable%5D=true&columns%5B2%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B2%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B3%5D%5Bdata%5D=3&columns%5B3%5D%5Bname%5D=&columns%5B3%5D%5Bsearchable%5D=true&columns%5B3%5D%5Borderable%5D=true&columns%5B3%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B3%5D%5Bsearch%5D%5Bregex%5D=false&order%5B0%5D%5Bcolumn%5D=1&order%5B0%5D%5Bdir%5D=asc&start=0&length=10&search%5Bvalue%5D=&search%5Bregex%5D=false&_=1431373301322

从我的cgi脚本中,我可以提取类似“draw”和“start”的值,如下所示:

local start = FORM.start
local draw = FORM.draw

但是我需要知道如何获取其他值。在FFox的F12工具中,我可以看到我有像columns[1][data]:1这样的值,但我似乎无法获取正确的语法来访问这些值。在我向你展示的查询字符串中,这个值被发送/发布为“columns%5B1%5D%5Bdata%5D=1”

我尝试了以下组合:

--log(FORM.columns.1.data)
--log(FORM.columns[1][data])
--log(FORM.columns[1]['data'])
--log(FORM.columns['1']['data'])

我还在lua命令行上运行了一些测试,以确保我知道如何访问存储在多维数组中的值

Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio
> mt = {}
> mt[1]={}
> mt[1]['data']=1
> print(mt[1].data)
1
> print(mt[1]['data'])
1
>

任何建议都将不胜感激。 谢谢。

点赞
用户2610249
用户2610249

查询字符串是 百分比编码,因为查询字符串中不能包含括号等特殊字符。在使用之前必须解码。这里有一个解码示例(网页末尾)。有两种方法:

function unescape (s)
  s = string.gsub(s, "+", " ")
  s = string.gsub(s, "%%(%x%x)", function (h)
        return string.char(tonumber(h, 16))
      end)
  return s
end

被以下代码使用:

cgi = {}
function decode (s)
  for name, value in string.gfind(s, "([^&=]+)=([^&=]+)") do
    name = unescape(name)
    value = unescape(value)
    cgi[name] = value
  end
end
2015-05-12 13:24:02