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


ajax call not working when trying to send data to localhost:8000 from localhost

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

XMLHttpRequest无法加载http://localhost:8000/project/login/uid=bimt;token=KAMWMS151UWP67Q。起源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);
        }
     });
});

因为端口不相同,所以它被视为跨源请求。您必须在请求的脚本中设置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)php不发出ajax请求。php在服务器端执行;javascript在客户端执行,js向服务器发出ajax请求。

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

默认情况下,AJAX不能进行跨域请求。

你应该参考这个链接。

试试,类似于:

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

您应该只使用相对路径。

我在localhost的位置交换了我的内部IP(192.168.1.x),并能够在上面调用XMLHttpRequest。这应该可以在不干扰跨源策略的情况下完成任务。