Ajax / PythonBottle / Jquery / JSON麻烦传递params

时间:2014-08-14 22:21:06

标签: javascript jquery python ajax json

当这个AJAX请求POSTS时,newUser()函数表示没有传递参数,即使我填写了userInput和passInput字段。 JS / JQ / AJAX:

            var userInput = document.getElementById('registerUsername');
            var passInput = document.getElementById('registerPassword');
            var message = document.getElementById('checkUsernameMessage');

            $(document).ready(function() {
                $('#submitRegisterButton').click(function () {
                    $.ajax({
                        type: "POST",
                        url: "/newUser",
                        data: JSON.stringify({"username":userInput, "password":passInput}),
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        async: true,
                        cache: false, 
                        success: function (msg) {
                            $('#checkUsernameMessage').text(msg.d);
                        }
                    });
                });
            });

我的python瓶功能newUser():

@post('/newUser')
def newUser(username, password):
    etc..

1 个答案:

答案 0 :(得分:2)

您需要在dom ready call中嵌套选择器。现在它们在DOM准备好之前运行,因此返回undefined。您可以通过控制变量来验证这一点,以查看它们是否返回任何数据。

另一方面,您可能想要选择这些输入的值,而不是自己返回DOM元素:所以请尝试

var userInput = document.getElementById('registerUsername').value等。

        $(document).ready(function() {


            $('#submitRegisterButton').click(function () {

                var userInput = document.getElementById('registerUsername').value;
                var passInput = document.getElementById('registerPassword').value;
                var message = document.getElementById('checkUsernameMessage').value;

                $.ajax({
                    type: "POST",
                    url: "/newUser",
                    data: JSON.stringify({"username":userInput, "password":passInput}),
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    async: true,
                    cache: false, 
                    success: function (msg) {
                        $('#checkUsernameMessage').text(msg.d);
                    }
                });
            });
        });

这可以解决您的问题。

修复了客户端问题,python问题是:

post请求被称为:def newUser( username, password ),其中不应传入任何参数,而是从表单变量派生:

def newUser():
    username = request.forms.get('userInput')
    password = request.forms.get('passInput')
    message = request.forms.get('message')