我正在构建一个Flask应用程序,并且正在使用jquery发送ajax请求。我在同一html页面上为两个不同的按钮创建了两个类似的ajax请求。我对两个ajax请求都进行了相同的编码,但是一个正在工作,而另一个则没有。从我的感觉,不起作用的ajax请求没有在后请求中发送参数。 这是烧瓶代码
@app.route('/createOrder',methods=['POST','GET'])
def createOrder():
username = chatusersession[session.get("uname")][1]
funct = request.form.get('funct')
if funct == "Create Order":
if username in ordersession:
del ordersession[username]
return render_template('createOrder.html',orderfor=username)
if funct == "getPaperCode":
paper_id = request.form.get("papercode")
crscode = db1.execute("Select course_code from student_master where rollno= :username ",{"username":username}).fetchone()
try:
query = db1.execute("Select pap_code,pap_name from subject_master where pap_code= :paper_id and course_code= :crscode",{"paper_id":paper_id,"crscode":crscode[0]}).fetchone()
if query is None:
return jsonify({"succes":False,"msg":"No Paper Code found!"})
else:
if username not in ordersession:
ordersession[username] = {"papers":[query[0],],"discount":None}
return jsonify({"succes":True,"papercode":query[0],"papername":query[1]})
else:
if query[0] in ordersession[username]["papers"]:
return jsonify({"succes":False,"msg":"You have already added this paper"})
else:
ordersession[username]["papers"].append[query[0]]
return jsonify({"succes":True,"papercode":query[0],"papername":query[1]})
except:
return jsonify({"succes":False,"msg":"Can not lookup! Try again Later."})
if funct == "deletepaper":
paper_id = request.form.get("papercode")
if paper_id in ordersession[username]["papers"]:
ordersession[username]["papers"].remove(paper_id)
return jsonify({"succes":True,"msg":"Deleted Successfuly"})
else:
return jsonify({"succes":False,"msg":"Can not delete , Some error"})
这是javascript,顶部定义的ajax函数无法正常工作,而第二个ajax函数则可以正常工作..发送请求的代码相同
$(document).ready(function(){
$('#deletepaper').on('submit',function(event) {
$.ajax ({
data: {
papercode : $('#papercodeinput').val() ,
funct : $('#functid').val()
},
type : 'POST',
url : '/createOrder'
})
.done(function(data){
if(data.succes) {
console.log("Hello success");
console.log(data.msg);
$('.table tbody').on('click','.btn',function(){
$(this).closet('tr').rmeove();
});
}
else {
console.log("Hello not success");
document.getElementById("alert").innerHTML = data.msg;
}
});
});
});
$(document).ready(function(){
$('#getpaper').on('submit',function(event) {
$.ajax ({
data: {
papercode : $('.papercodeinput').val() ,
funct : $('#functid').val()
},
type : 'POST',
url : '/createOrder'
})
.done(function(data){
if(data.succes) {
console.log("Hello success");
console.log(data);
var table = document.getElementById("paperlist");
var row = table.insertRow(-1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var cell4 = row.insertCell(3);
cell1.innerHTML = `<form id="deletepaper"><input type="hidden" id="papercodeinput" value=${data.papercode}><input type="hidden" id="functid" value='deletepaper'><button type="submit" class="btn">X</button></form>`;
cell2.innerHTML = data.papercode;
cell3.innerHTML = data.papername;
cell4.innerHTML = "<input>"
}
else {
console.log(data.msg);
}
});
document.querySelector('.papercodeinput').value = "";
event.preventDefault();
});
});
html代码是
<div class='container'>
<div class="order">
<p><h3>Order for : {{ orderfor }}</h3></p>
<form id="getpaper">
<label>Paper Code</label>
<input type="text" class='papercodeinput'>
<p id="alert"></p>
<input type='hidden' id="functid" name='funct' value='getPaperCode'>
<button type="submit" id="addpaper" name='addpaper'>Add Paper</button>
</form>
<table id="paperlist">
<thead>
<tr>
<th>F</th>
<th>PaperCode</th>
<th>Paper Name</th>
<th>Expected Marks/Grade</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
在处理第一个ajax请求时,flask抛出错误
“视图函数未返回有效响应。 TypeError:视图函数未返回有效响应。该函数返回None或不返回return语句而结束。127.0.0.1“
据我所知,是因为当ajax到达服务器时,没有收到返回请求。在服务器端"if funct == "deletepaper":"
上,此代码接收此ajax请求。我认为该参数未传递到服务器,这就是为什么所有if查询都无法正常工作且未返回任何内容的原因。
第一个无法正常工作的ajax请求,我提到过method = POST,它仍作为GET请求发送。并且没有参数。
请帮助.. 在此先感谢:)