2014-10-09 80 views
0

我使用下面的代码检索主机IP地址:构建脚本源动态

<script type="text/javascript" src="http://l2.io/ip.js"></script> 

我需要检索从上述网址的IP地址和构造另一个URL是这样的:

<script type="text/javascript" src="http://<above_ip_address>:8080/MonarchDemo/.."></script> 

两个脚本存在于HTML文件中像这样的<body>标签中:

<html> 
    <body> 
     <script type="text/javascript" src="http://l2.io/ip.js"></script> 
     <script type="text/javascript" src="http://<ip_address>:8080/MonarchDemo/.."></script> 
    </body> 
</html> 

运行此html文件,第一个script显示正确的IP地址,但我无法替换第二个script中的该IP地址。请指导。

+0

是第一个脚本动态?你怎么得到ipaddres – 2014-10-09 15:36:44

+0

不,它不是。第一个脚本是静态的。第二个脚本基于第一个脚本返回的IP地址是动态的 – user182944 2014-10-09 15:37:33

+0

你在某些js变量中是否有一些ipaddress – 2014-10-09 15:38:29

回答

2

我不确定我是否完全理解问题,但不是试图替换静态脚本标记,而是为什么不动态创建一个?

<script type="text/javascript" src="http://l2.io/ip.js?var=ipAddressFound"></script> 

var scr = document.createElement("script"); 

scr.type = "text/javascript"; 
scr.src = 'http://' + ipAddressFound + ':8080/MonarchDemo/..'; // Use the IP found above 
scr.innerHTML = null; 
document.body.appendChild(scr); 

感谢这个答案了var创建到脚本: Get client IP address via third party web service

+0

感谢您的指导。同意这一点。但第一个脚本正在返回我的IP地址,如何取代您发布的上述代码中的那个? – user182944 2014-10-09 15:36:49

+0

@ user182944在上面的代码中有一个变量'ipAddressFound' - 这将保存第一个脚本返回的值。对不起,如果我错过了什么。 – 2014-10-09 15:37:36

+0

但是如何将你的ip地址保存在你命名为ipAddressFound的变量中,并由脚本'' '? – user182944 2014-10-09 15:40:10

1

您可以使用jQuery的加载脚本take a look here

$.getScript('http://<ip_address>:8080/MonarchDemo/..', function(){}); 
1

你试图内加载在执行第一个脚本之后调用ajax?

退房http://api.jquery.com/jquery.getscript/

尝试类似:

var getIP = function() { 
    var ipadress; 
    // code for IP-Adress retrieval here 
    return ipadress; 
} 

// setup the URL 
var url = getIP() + ":8080/MonarchDemo/..." 
$.getScript(url, function(data, textStatus, jqxhr) { 
    // do want you want to do 
    // i.e. 
    // console.log(data); // Data returned 
    // console.log(textStatus); // Success 
    // console.log(jqxhr.status); // 200 
    // console.log("Load was performed."); 
}); 

作为替代你可以只instert上运行的JavaScript(文件撰写...)第二脚本块。

1

你必须动态地生成第二个脚本标签..

var dynamicScript = document.createElement('script'); 
    var scriptUrl = ":8080/MonarchDemo/.."; 

    var scripts = document.getElementsByTagName("script"); 

    //fetch the source and parse out the domain .. 

    var domain = scripts[0].getAttribute('src').replace('http://', '').replace('https://', '').split(/[/?#]/)[0]; 

    dynamicScript.setAttribute('src', "//" + domain + scriptUrl); 

    document.body.appendChild(dynamicScript)