2011-01-27 99 views
0

我有jQuery的AJAX一个奇怪的问题。我在Ie处收到以下消息:jQuery的AJAX问题

访问被拒绝。 jQuery的1.4.4.min.js

我运行的代码是:

$(document).ready(function(){ 

    leuk(<?php echo $_POST['decrease_id']; ?>,<?php echo $_POST['user_id'] ?>); 

    var int=self.setInterval("leuk(<?php echo $_POST['decrease_id']; ?>,<?php echo $_POST['user_id'] ?>);",5000); 

    }); 


    function leuk(decrease_id,user_id) 
    { 

    $.ajax({ 
    type: "POST", 
    url: 'http://schoolprove.nl/nieuw/index.php/leerlingen/checkvoortgang/', 
    data: 'decrease_id='+decrease_id+'&user_id='+user_id, 
    success: function(msg){ 
     $('#output').html(msg); 
     document.getElementById('opnieuw').style.display = 'none'; 
    } 
    }); 

    } 

这仅仅是一个简单的AJAX请求,但我不知道为什么会发生。我做了这个reqeust几次,但在这个页面上这个错误总是发生,并且AJAX请求不起作用。

是否有人知道如何解决这个问题。

非常感谢你!!!!

+0

在`HTTP运行代码:// schoolprove.nl`或其他领域? – 2011-01-27 12:24:37

回答

1

你正在你的域之外的AJAX请求。这是浏览器限制,适用于所有浏览器。

+0

它的工作原理!我只是从网址http://schoolprove.nl/nieuw/index.php/leerlingen/中删除。谢谢你的帮助! – JelleP 2011-01-27 13:09:26

0

如果您的文档页面也未从http://schoolprove.nl加载,则表明您正在运行Same Origin Policy限制。

你只有很少的选择,如果你想POST数据跨来源:

  • 如果你在服务器的控制权和您的用户可以坚持到最新版本的Firefox,Chrome或几个其他人,您可以使用新的CORS标准。这并不与之前的IE浏览器IE8的版本在所有的工作,并在IE8,因为微软决定使用一个不同的对象(XDomainRequest而不是XMLHttpRequest)它不使用jQuery的Ajax的东西工作。
  • 否则,你将需要您发送的请求(服从SOP),然后有一个服务器资源实际上张贴到schoolprove.nl编辑:那在PHP蒂姆·库珀given you a very basic example)的服务器端代理。

你会拥有更多选择与GET,包括:

...但我的猜测是,GET不适合你在做什么,因为它不是idempotent。 (如果是的话,那就是我想要做的。)

+0

它的工作原理!我只是从网址http://schoolprove.nl/nieuw/index.php/leerlingen/中删除。谢谢你的帮助! – JelleP 2011-01-27 13:09:06

+0

@user:这很奇怪,假设你的页面是从`http:// schooprove.nl`加载的(** not **`http:// www.schoolprove.nl`,** not **`https:// schoolprove.nl`),无论你有没有完整的路径,它都应该起作用。但是在可能的情况下,相对路径始终是首选。既然答案不是别人给你的答案,你可以回答你自己的问题。在几天之后,StackOverflow会让你接受答案(标记你的问题“回答”)。 – 2011-01-27 13:12:02

1

你不能让那些比一个脚本是目前在不同的域AJAX请求。如果需要,也许你可以在你的服务器上创建一个脚本来发出跨站请求。

脚本,这将是您的服务器上的一个例子:

$curl_res = curl_init("http://schoolprove.nl/nieuw/index.php/leerlingen/checkvoortgang/"); 

curl_setopt($curl_res, CURLOPT_POST, true); 
curl_setopt($curl_res, CURLOPT_POSTFIELDS, "decrease_id=" . $_POST[ 'decrease_id'] . "&user_id=" . $_POST['user_id']); 

curl_exec($curl_res);