如何从AngularJS向上传递数组并存储?

2024-05-17 04:36:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从AngularJS向python传递一个JSON对象。JSON结构为:

{ "name": "Bob",
  "address": "Springfield",
  "cars": [
    { "model": "Renault C15", "year": "1965" },
    ...
    { "model": "Ford Ka", "year": "1998" } ]
}

这是我的AngularJS控制器的一个片段。所有参数都是从一个HTML表单输入的(在本例中,数组“cars”是手动创建的,以向您展示我编程的方式)

^{pr2}$

如果我检查POST请求,我会看到以下参数:

name Bob
address Springfield
cars[0][model]  Renault C15
cars[0][year]   1965
cars[1][model]  Ford Ka
cars[1][year]   1998

最初,我不知道有多少物品会有阵列“汽车”。 现在,这是一个python函数的头。我知道如何存储普通参数,但我不知道如何对数组“cars”执行相同的操作。我会将它存储为python列表或字典。在

def something(self, **params):
    ...
    name=params['name']
    address=params['address']
    ...

如何存储阵列?在


Tags: namejson参数modeladdressparamscarsyear
1条回答
网友
1楼 · 发布于 2024-05-17 04:36:33

我不会告诉你关于安格拉的部分,因为这是我的兴趣,但我可以告诉你关于切里皮。{{1}和你的客户机如何避免使用cd2}发送数据更容易。当然,有了CherryPy,你可以同时处理这两种情况。在

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import cherrypy


config = {
  'global' : {
    'server.socket_host' : '127.0.0.1',
    'server.socket_port' : 8080,
    'server.thread_pool' : 8
  }
}

class App:

  @cherrypy.expose
  def index(self):
    return '''<!DOCTYPE html>
      <html>
      <head>
        <title>CherryPy demo</title>
        <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script>
        <script type='text/javascript'>
          var data = { 
            "name": "Bob",
            "address": "Springfield",
            "cars": [
              { "model": "Renault C15", "year": "1965" },
              { "model": "Ford Ka", "year": "1998" }
            ]
          };

          $(document).ready(function()
          {
            $('#send-json').on('click', function()
            {
              $.ajax({
                'type'        : 'POST',
                'dataType'    : 'JSON',
                'contentType' : 'application/json',
                'url'         : '/jsonin',
                'data'        : JSON.stringify(data),
                'success'     : function(response)
                {
                  console.log(response);  
                }
              });
            });
            $('#send-form').on('click', function()
            {
              $.ajax({
                'type'        : 'POST',
                'dataType'    : 'JSON',
                'url'         : '/formin',
                'data'        : data,
                'success'     : function(response)
                {
                  console.log(response);  
                }
              });
            });            
          });
        </script>
      </head>
      <body>
        <p><a href='#' id='send-json'>Send JSON</a></p>
        <p><a href='#' id='send-form'>Send form</a></p>
      </body>
      </html>
    '''

  @cherrypy.expose
  @cherrypy.tools.json_out()
  def formin(self, **kwargs):
    # You can just print a variable a see it in the terminal
    # where CherryPy is executed
    print(kwargs)
    # You would see
    # {
    #   'cars[1][year]': u'1998', 
    #   'name': u'Bob', 
    #   'cars[0][model]': u'Renault C15', 
    #   'address': u'Springfield', 
    #   'cars[0][year]': u'1965', 
    #   'cars[1][model]': u'Ford Ka'
    # }
    return kwargs.items()

  @cherrypy.expose
  @cherrypy.tools.json_in()
  @cherrypy.tools.json_out()
  def jsonin(self):
    data = cherrypy.request.json # just the same structure
    return data.items()


if __name__ == '__main__':
  cherrypy.quickstart(App(), '/', config)

相关问题 更多 >