我不明白成功函数有什么问题,因为ajax调用工作正常,数据在视图中处理,但在成功函数中,数据不会附加到div。
我的jquery
$(document).ready(function() {
$('#other').click(function() {
var filename = "{{filename}}";
var count = $("#count").val();
$.ajax({
type: 'POST',
url: '/increment_page/',
data: {'name':filename,'count':count,'csrfmiddlewaretoken': '{{ csrf_token }}',},
dataType: 'jsonp',
success: function(data) {
$( "#show" ).html(data.result);
}
});
});
});
模板
<div id="filename">{{filename}}</div>
<input type="text" id ="count" value='1'>
<button id="other">Click
</button>
<div id="show">
{{result|first|slice:"1:"}}
</div>
Views.py
def increment_page(request):
#If the AJAX request
if request.is_ajax() and request.POST:
try:
#Get the filename
name = request.POST['name']
pdf = pyPdf.PdfFileReader(open(name, "rb"))
result=[]
#Extract the file contents
for page in pdf.pages:
result.append(page.extractText())
result = [x for x in result if x != '']
#Get the count
count = int(request.POST['count'])
#Increment the count
#Get the list item at the count(position)p
result=result[count]
my_dict={}
my_dict={'result':result,'count':count}
#print(my_dict)
data =json.dumps(my_dict)
return HttpResponse(data,content_type='application/json')
except:
e = sys.exc_info()
return HttpResponse(e)
else:
raise Http404
#return render(request,'view2.html',{'my_dict':my_dict,'result':result})
答案 0 :(得分:0)
由于您评论说您的响应正在打印到命令提示符,我认为您的成功函数正在被调用它应该如何。为了以防万一,请在您的ajax调用中添加以下行以记录错误,如果有的话请注释。
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
}
如果您通过点击按钮调用您的ajax并且您的表单已提交,则会阻止该事件发生。
$(document).ready(function() {
$('#other').click(function(e) {
e.preventDefault();
var filename = "{{filename}}";
var count = $("#count").val();
$.ajax({
type: 'POST',
url: '/increment_page/',
data: {'name':filename,'count':count,'csrfmiddlewaretoken': '{{ csrf_token }}',},
dataType: 'jsonp',
success: function(data) {
$( "#show" ).html(data.result);
},
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
console.log(err.Message);
//alert(err.Message); //you can use either of these to display error
}
});
});
});
很抱歉要求您对任何错误发表评论。我无法对问题发表评论,因此我必须将其纳入我的答案中。