簡體   English   中英

來自外部javascript文件的Django ajax請求

[英]Django ajax request from external javascript file

我試圖從外部JavaScript文件進行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令牌存在語法錯誤。

您已經在模板中的腳本標記內放置了CSRF令牌:這沒有意義,因為它本身並不是有效的Javascript。

此外,雖然它不是語法錯誤,但您在JS文件本身內部使用了Django模板變量語法,這將不會被解析 - 因此參數將作為原始字符串"{{ csrf_token }}"

但是,Django文檔包含使用CSRF和Ajax的完整說明,因此您應該遵循這些說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM