ajax加载功能不显示我的页面

时间:2014-08-16 19:38:44

标签: javascript jquery ajax html5

我拥有一个网站,并且有一些文字信息。

我尝试使用以下内容在HTML5应用程序中显示我的网页,但我没有得到它

<div id=from_server></div>

<script>
$(document).ready(

function ( ) 
{
    $('#from_server').load('http://magician.sdf-eu.org/barebone.html');
});

</script>

我需要使用ajax,因为我需要访问我网站内的php。

1 个答案:

答案 0 :(得分:0)

CSRF验证可能会阻止跨域请求。

您可以尝试在请求中明确包含CSRF令牌。我不知道jQuery的load是否会自动执行此操作,但您当然可以使用$.ajax执行此操作。
另外,请确保您的服务器设置CSRF cookie。在某些情况下,它会自动完成,例如当HTML中有form时。但是,很多时候,您需要明确要求它这样做。

试试这个脚本:

$(document).ready(function (){

    var request = $.ajax({
        url: 'http://magician.sdf-eu.org/barebone.html',
        beforeSend: secureAjaxForCsrf,
        type: 'GET'
    });

    request.done(function(response){
        $('#from_server').html(response);
    });

    function secureAjaxForCsrf(xhr, settings){
        var csrftoken = getCookie("csrftoken");
        if(!csrfSafeMethod(settings.type)){
            xhr.setRequestHeader("X-CSRFToken", csrftoken);
        };
    }

    function csrfSafeMethod(method){
        // Returns true if the given method is free of CSRF risk.
        return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
    }

    function getCookie(name){
        var cookieValue = null;
        if(document.cookie && document.cookie != ""){
            var cookies = document.cookie.split(";");
            for(var i=0; i<cookies.length; i++){
                var cookie = $.trim(cookies[i]);
                if(cookie.substring(0, name.length+1) == (name+"=")){
                    cookieValue = decodeURIComponent(cookie.substring(name.length+1));
                    break;
                };
            };
        };
        return cookieValue;
    }
});