当这个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..
答案 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')