0

当 html 文件未上传到我的服务器时,下面的代码返回“错误”是否正常,如果是:为什么?一旦我将它上传到我的服务器,它就可以完美运行,但是......

<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
        function validate() {

                    $.ajax({
                        type:'POST',
                        url:'http://www.mywebsite.com/formvalidate.php',
                        data:{

                        },
                        dataType:'json',
                        success:function (data) {
                            alert('success');


                        },
                        error:function (XMLHttpRequest, textStatus, errorThrown) {
                            alert('error');
                        }
                    });

                }
</script>
</head>
<body>
<input type=button onclick="validate();" value="Click me"/>
</body>
4

3 回答 3

2

之所以会发生这种情况,是因为如果您在 jquery ajax 调用上使用类型,则可以避免使用“相同站点来源策略”。 在您的情况下,您可以,因为您正在创作服务器和客户端。jsonp

于 2013-08-07T14:50:20.033 回答
1

原因是不允许跨域 ajax,当您从浏览器或本地主机运行此文件时,它会访问不同的网站 url 进行 ajax 调用,这是不允许的。

但是当你把它上传到同一台服务器上时,就没有跨域问题,所以成功消息

为了允许跨域 ajax 调用,您应该使用 JSONP

$.ajax({
     url:"testserver.php",
     dataType: 'jsonp', // Notice! JSONP <-- P (lowercase)
     success:function(json){
         // do stuff with json (in this case an array)
         alert("Success");
     },
     error:function(){
         alert("Error");
     },
});

参考:- jQuery AJAX 跨域

于 2013-08-07T14:50:33.170 回答
0

Javascript 不是跨领域语言,因此您需要在同一个域中,或者使用JSONP在加载页面本身中允许它。

于 2013-08-07T14:49:47.047 回答