javascript - Ajax/PythonBottle/Jquery/JSON 传递参数时遇到问题

标签 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 Bottle 函数 newUser() :

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

最佳答案

您需要将选择器嵌套在 dom 就绪调用中。现在它们在 DOM 准备好之前运行,因此返回未定义。您可以通过控制台变量来验证这一点,看看它们是否返回任何数据。

另一件事是,您可能想要选择这些输入的值,而不是返回 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')

关于javascript - Ajax/PythonBottle/Jquery/JSON 传递参数时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25318476/

相关文章:

javascript - 带有数据数组的顺序 promise 链,如何解析 promise 链?

Javascript:在二维矩阵(数组)中查找矩形的 Angular 位置

javascript - 对嵌套表行进行分组

javascript - Handlebars : 2 sources 1 template

python - Django南迁是否允许使用Model属性,为什么?

python - 存储和访问节点属性 python networkx

Python - 大型日志文件上的正则表达式

javascript - JQuery on keydown 事件焦点到一个按钮似乎会自动按下按钮?

javascript - 单击单选按钮以滑动并显示隐藏的 div 并传递一个值

javascript - 在 mark.js 中突出显示另一个已突出显示的术语中的术语