2014-03-27 56 views
1

我想從外部JavaScript文件進行ajax調用。從外部JavaScript文件Django ajax請求

ajax.js模板

function ajax() { 
    setInterval(function() { 
     $.ajax({ 
      url : "/ajax_get.html", 
      type : "POST", 
      dataType: "json", 
      data : { 
       client_response : 'Y', 
       csrfmiddlewaretoken: '{{ csrf_token }}', 
      }, 
      success : function(json) { 
       alert('Working'); 
      }, 
      error : function(xhr,errmsg,err) { 
       alert(xhr.status + ": " + xhr.responseText); 
      }  
     }); 
     alert('Failing'); 
     return false; 
    }, 5000); 
} 

納入

<script>  
    ajax(); 
    {% csrf_token %} 
</script> 

Views.py

def ajax_request(request): 

    if request.POST.has_key('client_response'): 
     x=request.POST['client_response'] 
     response_dict={}          
     response_dict.update({'server_response':'working'}) 
     return HttpResponse(simplejson.dumps(response_dict), mimetype='application/javascript') 
    else: 
     return render_to_response('ajaxexample.html', context_instance=RequestContext(request)) 

我試圖尋找它,但我唯一的例子,其中面臨的Ajax調用來自Forms。我試圖實現的是將來自ajax調用的輸出附加到文件。控制檯告訴我,在腳本標記內有關於csrf標記的語法錯誤。

回答

3

您已將CSRF標記放置在模板中的腳本標記內部:這沒有意義,因爲它本身無效。

此外,雖然它不是語法錯誤,但是您已經在JS文件本身內部使用了Django模板變量語法,因此該參數將作爲原始字符串"{{ csrf_token }}"發送。

但是,Django文檔包含了關於using CSRF with Ajax的完整說明,因此您應該遵循這些說明。

+0

謝謝。 {% csrf_token %}是一個無意義的補充,試圖以「簡單」的方式解決它。 –