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

如何从ajax到python获取json[已关闭]

  •  0
  • Kubatekk  · 技术社区  · 6 年前

    以下是使用ajax的html:

        <form>
            <input type="text" id="email" name="email"/>
            <input type="text" name="password" id="pass"/>
            <span id="btn">send</span>
        </form>
        <script>
            function log() {
                var email, pass;
                email = document.getElementById('email').value;
                pass = document.getElementById('pass').value;
                fetch('http://localhost:5000/login', {
                    body: {
                        email: email,
                        password: pass
                    },
                    headers: {
                        'Accept': 'application/json, text/plain, */*',
                        'Content-Type': 'aplication/json'
                    },
                    method: 'post'
                }).then(response => response.json(), err => {throw err}).then(response => {
                    console.log(response);
                })
            }
            var btn = document.getElementById('btn');
            btn.addEventListener('click', log);
        </script>
    

    下面是Python代码:

    @app.route('/login', methods=['POST'])
        def login():
            print(request.get_json()) #i dont know how to get data here 
            return json.dumps({"success":True})
    

    这是仅用于测试以获取json的代码。

    有什么想法吗?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Barmar 0___________    6 年前

    您需要转换 body JSON选项:

    body: JSON.stringify({
        email: email,
        password: pass
    }),
    
        2
  •  0
  •   Ajax1234    6 年前

    具有 jquery ,您可以创建 data 对象,其值可以在指定路由的主体中访问:

    <html> 
      <head>
         <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
      </head>
      <body>
        <input type="text" id="email" name="email"/>
        <input type="text" name="password" id="pass"/>
        <button type='button' id='submit'>Submit</button>
      </body>
      <script>
        $(document).ready(function() {
          $('#submit').click(function(){
            var email = $('#email').val();
            var password = $('#pass').val();
            $.ajax({
             url: "/login",
             type: "get",
             data: {email: email, pass:password},
             success: function(response) {
              if(response.status){
                //do something if successful
              }
              else{
               //do something if login fails
              }
            },
             error: function(xhr) {
               //Do Something to handle error
           }
         });
         });
        });
      </script>
    </html>
    

    在您的 flask app :

    @app.route('/login')
    def login():
      email = flask.request.args.get('email')
      password = flask.request.args.get('pass')
      return flask.jsonify({'status':isvalid(email, password)})