我正在使用:
//function to obtain current location, this is used to display relevant contact information
$.get("http://ipinfo.io", function(response){
$("#address").html(response.region);//http://jsfiddle.net/zK5FN/2/
$("input[id=address]").val(response.region);
}, "jsonp");
获取我的联系页面的当前位置。目的是我可以使用if地址==来显示各种联系号码等。
此函数更新隐藏字段的值。我检查了调试器,它工作正常。
然后我想得到这个值,以便我可以玩它但它总是空白或空。
我有
$(document).ready(function(){
var testLoc = $('#address').val();
if(testLoc == ""){
alert("NOES!!!");
}
});
我目前放在头部的同一个脚本块中,看看结果是否不同,再次,它总是空白,并且总是返回NOES警报。
我认为通过等待文档加载,我确定会分配/设置值。
有人可以提出解决方案吗?我确信这是一个简单的解决方案而且它正在杀了我
编辑:HTML
<input type="hidden" name="address" id="address"/>
编辑解决方案:
<script>
$(function() {
$.ajax({url:"http://ipinfo.io",dataType:'jsonp'})
.success(function(response){
$("#address").val(response.region);
$("input[id=address]").val(response.region);
var testLoc = $('#address').val();
if(testLoc == ""){
alert("NOES!!!");
}else{
alert("jQuery can suck my...")
}
});
});
</script>
答案 0 :(得分:1)
我建议您将$.get
请求放在document.ready函数中。
请注意,只要DOM准备好就会调用ready函数,因此即使AJAX在此之前返回,您填充该值的元素可能甚至都没有准备好。
$(function() { // this is shorthand for $(document).ready(
$.get({url"http://ipinfo.io",dataType:'jsonp'})
succsss(function(response){
// do something with response
});
});
答案 1 :(得分:0)
在get()返回之前,您无法检查地址:
$(document).ready(function () {
$.get("http://ipinfo.io", function (response) {
$("#address").html(response.region); //http://jsfiddle.net/zK5FN/2/
$("input[id=address]").val(response.region);
var testLoc = $('#address').val();
if (testLoc == "") {
alert("NOES!!!");
}
}, "jsonp");
});
那就是说,当我运行它时,response.region为null所以我仍然得到警报。