试了很多次,表单提交后,到alert(data)一句(包括这一句)都执行正常,但之后的ajax语句就无法发送请求,ajax语句里面的几个alert也没有运行,最后的alert('1')也没有运行(异步请求正常运行的话应该是会执行的吧)
以下是前端代码,本来代码是要复杂些的,但我调试的时候把代码简化了,基本确定是ajax语句的问题了。
$(function () {
'use strict';
$('#login_form').submit(function (event) {
event.stopPropagation();
event.preventDefault();
var nickname = $('#login_form').find('#login_nickname').val();
var pwd = $('#login_form').find('#login_password').val();
if (!nickname || !pwd) {
$('#login_text').show();
}
var raw_data = {
title: 'login',
nickname: nickname,
password: pwd
}
var data = JSON.stringify(raw_data);
alert(data);
$.ajax('/login', {
dataType: 'json'
}).done(function (data) {
alert('成功');
}).fail(function (xhr, status) {
alert('失败');
}).always(function () {
alert('请求完成: 无论成功或失败都会调用');
});
alert('1');
});
});
后端代码如下,用的是flask。按理来说即便url不对,后台也应该有请求记录的,然而后台并没有显示该记录
@app.route('/login',methods=['POST',])
def login():
if g.user is not None and g.user.is_authenticated:
flash('You have already logged in!')
return redirect(url_for('home'))
raw_data=request.get_data()
print(raw_data)
data=json.loads(raw_data)
print(data[pwd],data[nickname])
resp=dict(success = True,text ='limbohotmore!')
return json.dumps(resp)
后台记录如下,无论提交几次表单,都只有第一次获取主页面的请求记录
* Restarting with stat
* Debugger is active!
* Debugger PIN: 289-281-425
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [26/Jul/2019 12:52:27] "GET / HTTP/1.1" 200 -