Json响应数据不会附加到div

时间:2016-09-04 16:07:12

标签: javascript jquery python html django

我不明白成功函数有什么问题,因为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})

1 个答案:

答案 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
       }
      });

     });
    });

很抱歉要求您对任何错误发表评论。我无法对问题发表评论,因此我必须将其纳入我的答案中。