我正在使用Jquery彩盒和烧瓶。当用户点击图标时,脚本会提交一个URL以在彩色框内呈现表单。当用户点击保存按钮时,表单将被提交并且颜色框将关闭。问题是我只想让盒子关闭,而不是重新加载屏幕,虽然工作正常但没有理由重新绘制它。我不明白的是你怎么没有返回任何东西,或者在导致屏幕重新加载的视图中什么都不做。这是视图代码:
@listings.route('/notes/<string:find>',methods=['GET','POST'])
def notes( find = None ):
""" Ajax call to handle notes
"""
find = Found.objects.get( pk = find )
if request.method == 'GET':
return render_template('note.html', find = find )
if 'save' in request.form:
find.notes = request.form['note']
find.save()
#return redirect( url_for('listings.landing', search=find.search.pk))
return '',200
重定向重新加载屏幕并返回'',200导致空白屏幕。如何告诉烧瓶在退货时什么都不做?
答案 0 :(得分:0)
问题不是Flask ......“问题”是浏览器(间接是HTTP协议)。如果您返回30X
级别响应,则浏览器会透明地发出重定向URL的新请求...如果是200
响应,浏览器将显示它收到的最终用户(在大多数情况下)。这是因为redirect
说“你正在寻找的东西实际上是在这个其他地址找到的”而200 OK
说“你找到了你要找的东西,而这里就是”。
您需要返回204 No Content
而不是200 OK
:
return '', 204
204
响应对消费实体说:“这里没什么新东西,我做了我需要的东西,我没有什么可以对你说的”。在浏览器中,这会导致请求所在的页面停留在屏幕上。
答案 1 :(得分:0)
谢谢它的工作,我只想分享我做的事情,最终让它发挥作用。我不得不使用这个
.on('click', '#colorbox .cancel, #colorbox .note', function(e) {
if ( $(this).attr('class') == 'note' )
$('.notes').submit();
$.colorbox.close();
e.preventDefault();
})
,html看起来像这样
<form action="{{url_for('listings.notes', find=find.pk)}}" method='post', class='notes'>
<textarea rows="4" cols="45" name='note'>{{find.notes|safe}}</textarea>
<div class="bottom">
<a href='#' class="cancel">cancel</a>
<input type='submit' name='save' value='save' class='note'/>
</div>
</form>