我的目标是使用jQuery或Javascript 获取用户的IP地址而不使用使用其他库或类似的东西,将其存储为变量,然后再使用该变量。我看了看,但我只找到像getjson或ajax这样的解决方案,这些解决方案在函数内部有变量 - 在其他地方无法使用。
这是我能够独立完成的最好的事情,并不比其他任何解决方案好得多:
$.ajax({
type: "POST",
url: "datascripts/ip.php",
data: {get:"ip"},
dataType: "json",
context: document.body,
async: true,
success: function(res, stato) {
var ip = res.ip;
},
error: function(res, stato) {
alert("IP thing didn't work.");
}
});
alert(ip);
但是,这并没有做任何事情,因为变量是在ajax函数内部设置的,并且似乎不存在于它之外。
如果我将成功功能更改为:
success: function(res, stato) {
alert(res.ip);
}
然后这很好用 - 我得到了正确的IP。
我想这可以通过简单地使ip变量成为一个全局变量来修复,但是它还没有工作 - 不知道为什么。
我尝试了一些不同的方法来使IP变量成为全局:
答案 0 :(得分:3)
注意,只有在ajax成功返回后,才会填充ip
变量。你之前不能使用它,所以也许你可以进行回调
var ip;
$.ajax({
type: "POST",
url: "datascripts/ip.php",
data: {get:"ip"},
dataType: "json",
context: document.body,
async: true,
success: function(res, stato) {
ip = res.ip;
myCallback();
},
error: function(res, stato) {
alert("IP thing didn't work.");
}
});
function myCallback(){
// Do whatever you want with ip here.
console.log(ip);
}