jquery post url参数与python的比较无法正常工作

时间:2014-04-17 05:54:04

标签: jquery python-2.7 tornado

Iam使用jquery AJAX请求使用post methid将参数发送到龙卷风服务器并做了类似这样的事情:

$.ajax({
    type: "POST",
    url: "/leave_action?id=" + rowid.id + "&action=" + param,
    dataType: "json",
    async: false
  })

但是当我使用python进行比较时,它无法正常工作:

action = str(self.get_query_argument("action"))
print action  #here am getting either approve or decline 
  if action == "approve":
     print "approved"
  elif action == "decline":
     print "declined"

我也试过is,但没有运气。

我也尝试过:

      action = self.get_query_argument("action")
      a=action.encode('ascii','ignore')

但没有用。

1 个答案:

答案 0 :(得分:3)

有一点你最好知道! Tornado是一个基于MVC的框架,可以让你掌握很多东西。

因此,您可以使用查询字符串来设置URL模式。这意味着您不需要通过self.get_query_argument()self.get_argument()获得价值。

对于网址:

application = tornado.web.Application([
    (r'^(?i)/leave_action/([\w+^/])/([\w+^/])[/]?$', YourLeaveActionHandler)
], **settings)

甚至:

application = tornado.web.Application([
    (r'/leave_action/(id)/(approve|decline)', YourLeaveActionHandler, None, "this_url_name")
], **settings)

第二个URL模式稍微好一些。因为我们明确强调第一组应该是id而第二组应该是approvedecline

在您的处理程序中:

class YourLeaveActionHandler(tornado.web.RequestHandler):
    def get(self, id, action):
        print id
        print action

    def post(self, id, action):
        print id
        print action

        if action == "approve":
            print "approved"
        elif action == "decline":
            print "declined"

在您的处理程序中,action应为approvedecline,并且此处理程序中的任何其他内容都不会被接受。因此,您可以轻松比较行动值。

  • 你应该注意这一点,有时当你使用POST方法时,龙卷风可能会忽略查询字符串。