Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Cherrypy-接收JSON数据404和x27;缺少参数';_Javascript_Python_Json_Ajax_Cherrypy - Fatal编程技术网

Javascript Cherrypy-接收JSON数据404和x27;缺少参数';

Javascript Cherrypy-接收JSON数据404和x27;缺少参数';,javascript,python,json,ajax,cherrypy,Javascript,Python,Json,Ajax,Cherrypy,我正在使用Cherrypy Postgresql从头开始创建自己的网站。我精通Python和Javascript,但我非常热衷于学习这两种编程语言 我现在试图实现的是填充HTML表单->通过AJAX使用发送数据定义访问者的权限->并在完成后重定向到索引 我与这个错误斗争了好几天,因为我在互联网上找不到如何使用JSON通过AJAX以python发送数据的示例 正如我所说,我是一名初学者,所以请指出我正在编写的代码中的所有不良行为:) Cherrypy引擎打印输出 Python登录方法

我正在使用Cherrypy Postgresql从头开始创建自己的网站。我精通Python和Javascript,但我非常热衷于学习这两种编程语言


我现在试图实现的是
填充HTML表单
->
通过AJAX使用
发送数据
定义访问者的权限
->并在完成后重定向到索引


我与这个错误斗争了好几天,因为我在互联网上找不到如何使用JSON通过AJAX以python发送数据的示例


正如我所说,我是一名初学者,所以请指出我正在编写的代码中的所有不良行为:)


Cherrypy引擎打印输出
Python登录方法
js重写提交函数
HTML文件

登录

是否未注册


您将在
登录
函数中收到的AJAX数据不包含在参数
数据字符串中(实际上,您不会得到任何参数),而是包含在
cherrypy.request.json中

因此,您应该按如下方式更改登录功能:

@cherrypy.expose
@cherrypy.tools.json_in()
def login(self):
    json_obj = cherrypy.request.json
    ...
注意,您将收到一个基于AJAX参数的实际对象(dict/list),而不是字符串


另一个注意事项:
cherrypy.request.json
仅当您在()中设置了decorator
@cherrypy.tools.json_时才会填充(
)。

您将在
登录
函数中收到的AJAX数据不包含在参数
数据字符串
中(实际上,您不会得到任何参数)但是在
cherrypy.request.json

因此,您应该按如下方式更改登录功能:

@cherrypy.expose
@cherrypy.tools.json_in()
def login(self):
    json_obj = cherrypy.request.json
    ...
注意,您将收到一个基于AJAX参数的实际对象(dict/list),而不是字符串

另一个注意事项:
cherrypy.request.json
只有在()中设置了装饰程序
@cherrypy.tools.json_时才会填充(正如您已经做的那样)

class Root(object):
    exposed = True

    @cherrypy.expose
    # @cherrypy.tools.json_out()
    @cherrypy.tools.json_in()
    @cherrypy.tools.accept(media='application/json')
    def login(self, dataString):
        # cherrypy.request.method == "POST":
        self.addHeader()
        db = config()
        conn = psycopg2.connect(**db)
        cur = conn.cursor()
        is_logged_in = None
        bad_username = None
        bad_password = None
        json.load(dataString)
        # input_json = cherrypy.request.json()
        # dataString = input_json["dataString"]
        # - Login
        username_input = dataString[0]
        if username_input == cur.execute("SELECT username FROM users WHERE username = %s;", (username_input)):
            username_password = dataString[1]
            if username_password == cur.execute("SELECT password FROM users WHERE password = %s;", (username_password)):
                return is_logged_in
            else:
                return bad_password
        else:
            return bad_username

    @cherrypy.expose
    def index(self):
        self.addHeader()
        return "ok"
$("#myForm").submit(function(){
    var dataString = [];
    dataString.login = $("#login").val();
    dataString.password = $("#password").val();

    $.ajax({
      type: 'POST',
      url: 'http://0.0.0.0:8080/login',
      data: JSON.stringify(dataString),
      contentType: 'application/json',
      dataType: 'json',
      success: function(response) {
          console.log(response);
      },
      error: function(response) {
          console.log(response);
      }
    });
});
<!DOCTYPE html>
<html>
  <head>
    <link href="style.css" rel="stylesheet">
    <script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
    <script src="example.js"></script>
  </head>
<body>
<div class="login-page">
  <div class="form">
      <form action="/process_form/" method="post">
      <!-- id="myForm" class="login-form"> -->
        <input type="text" name="login" id="login" placeholder="login"/>
        <input type="password" name="password" id="password" placeholder="password"/>
        <button form="myForm" type="submit">Login</button>
        <p class="message">Not registered? <a href="#">Create an account</a></p>
      </form>
  </div>
</div>
</body>
</html>
@cherrypy.expose
@cherrypy.tools.json_in()
def login(self):
    json_obj = cherrypy.request.json
    ...