0

将以下 url 粘贴到地址栏会提示输入用户名和密码。一旦通过身份验证,它就会以 json 格式发送结果。 http://metabolomics.pharm.uconn.edu:2480/connect/iimdb

但是以下代码不起作用。结果警报“失败”。我还尝试对用户名和密码进行硬编码。有人可以发现问题。提前致谢。

    <script type="text/javascript" src="jquery-1.9.1.min.js"></script>
        <script type="text/javascript">
        $(document).ready(function(){   
            var userName = $('#username').val();
            var password = $('#password').val();
            var submitButton = $('#submitButton');
            submitButton.click(function(){
    $.ajax( {
        type: 'Get',
    url : 'http://metabolomics.pharm.uconn.edu:2480/connect/iimdb',
    dataType : 'json',
        username : userName,
        password : password,
    success : function(data) {
        alert("success");
        response(data);
    },
        error : function()
        {
        alert("failed");
        }
});
    });
        }); 
        </script>
4

2 回答 2

2

从客户端您不能向任何其他域(甚至不是相同的域,不同的端口,如:81)然后主机本身发出请求。这是同源政策

如果您希望实现此身份验证,则需要将 AJAX 发布在您的主机(应用程序运行的地方)上,并且应用程序本身需要将此请求传播到所需的地址 - 在您的情况下为metabolomics.

收到答复后,您可以以任何您喜欢的方式回复客户的 ajax 请求。

如果您真的想坚持您的 JavaScript 格式,可以使用一种解决方法来代理此类请求,请参阅Q: Make cross-domain ajax JSONP request with jQueryQ: Ajax cross domain call

于 2013-02-21T19:25:39.453 回答
0

您还可以使用$.getJSON(),它没有“同源策略”的问题。

相当于:

$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success
});
于 2013-11-13T10:20:46.763 回答