尝试从localhost向localhost:8000发送数据时,ajax调用不起作用

时间:2013-06-24 22:02:48

标签: php ajax django

当我尝试从php (localhost)django (localhost:8000)进行AJAX调用时,会抛出以下错误。

  

XMLHttpRequest无法加载   http://localhost:8000/project/login/uid=bimt;token=KAMWMS151UWP67Q。   Access-Control-Allow-Origin不允许原点http://localhost

$(document).on('click', '.login', function(event) {
    var username = $('#username').val();
    var token = $('#token').val();
    $.ajax({
       type: "POST",
       url: "http://localhost:8000/project/login/uid=" + username + ";token=" + token,
       success: function (html) {
         alert(html);
        }
     });
});

5 个答案:

答案 0 :(得分:8)

由于端口不相同,因此它被视为跨源请求。 您必须在要请求的脚本中设置Access-Control-Allow-Origin标头。

了解详情:

http://enable-cors.org/server.html

或者,特别是对于django:

http://chase-seibert.github.io/blog/2012/01/27/using-access-control-allow-origin-to-make-cross-domain-post-requests-from-javsacript.html

答案 1 :(得分:1)

1)php不会发出ajax请求。 php在服务器端执行; javascript在客户端执行,而js向服务器发出ajax请求。

2)js不允许你向与获取当前页面的主机不同的主机发出ajax请求。

答案 2 :(得分:0)

默认情况下,AJAX无法发出跨域请求。

您应该参考此link

答案 3 :(得分:0)

尝试,例如:

$('#yourClickButtonId').click(function(){
    $.ajax({
        type: 'POST',
        url: 'project/login?uid='+$('#usename')+'&token='+$('#token'),
        success: function(data){
          alert(data);
        }
    });
});

您应该使用相对路径。

答案 4 :(得分:0)

我交换了我的内部IP(192.168.1.x)代替localhost,并且可以在其上调用XMLHttpRequest。这应该可以解决问题而不会搞乱交叉原始政策。