Jquery ajax函数返回错误的网页

时间:2018-02-07 11:05:02

标签: javascript jquery html ajax

我有2台本地服务器连接到本地交换机。 Ip地址:192.168.0.10和192.168.0.20。我试图使用jquery Ajax从第二个到第一个获取一些数据,如下所示:

    <!DOCTYPE html>
<html> 
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<script>
$(document).ready(function(){ 
    $("button").click(function(){ 
        $.ajax({              
            type: "GET",  
            url: "192.168.0.20/d",   
            dataType: '', 
            success: function(response, textStatus, XMLHttpRequest) {    
            console.log(response);  
            window.alert(response);
            }   
        });  
    }); 
}); 
</script> 
</head>
<body>
<button id="get-button">Toggle</button> 
</body> 
</html> 

当我把&#34; 192.168.0.20/d"在浏览器网址中,我得到了&#34; data = xyz&#34;正如预期的那样,但是使用上面的方法我得到了确切的脚本,它返回自己(192.168.0.10)而不是192.168.0.20。我该如何解决这个问题?

感谢。

编辑。 以下内容消除了Access-Control-Allow-Origin错误,但返回的数据未出现在消息框中,但它以开发人员模式显示。

$.ajax({  
    type: "GET", 
    crossDomain: true,  
    dataType: "JSONP",  
    url: "//192.168.0.20/d", 
    success: function(response, textStatus, XMLHttpRequest) { 
    console.log(response);  
    window.alert(response);  
 }

jdeprscan tool

1 个答案:

答案 0 :(得分:2)

您需要将您的网址更改为:

url: "//192.168.0.20/d"

您现在指定的方式是相对网址。换句话说,它将假设您要向当前域发出请求,并且192.168.0.20是您网站的子文件夹。如果你创建了一个超链接,你会遇到同样的问题 - 它不是ajax问题,它是浏览器解释URL片段的方式。这通常可以帮助程序员在不同服务器上将同一站点部署到多个环境(例如dev,test,live)时,因此他们不必仅因为部署位置发生更改而将所有URL替换为指向其他位置。但是,在这种情况下,您完全指向另一台服务器上的资源,因此这种情况不适用。

如果您在其前面放置//,则表示它是绝对网址(因此始终指向完全相同的位置,无论在何处部署原始网页)斜杠后面的第一部分是域名或IP地址。

(注意//之前没有http:https:意味着浏览器将使用与当前正在运行的原始网页相同的协议。因此,如果您的网页是通过HTTP它也会通过HTTP发出ajax请求,如果你的页面是通过HTTPS加载的,它将通过HTTPS发出ajax请求。如果这不适合这种情况,那么你可以添加http:或{{1在适当的时候开始。)

查看https://jsfiddle.net/9uyuj96f/(您的代码)和https://jsfiddle.net/9uyuj96f/1/(固定版本),并在浏览器的网络工具中查看ajax请求以查看差异。