1

我在用着:

//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 address== 来显示各种联系电话等。

此函数更新隐藏字段的值。我检查了调试器,它工作正常。

然后我想获得这个值,以便我可以使用它,但它总是空白或空的。

我有

$(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>
4

2 回答 2

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
    });
});

小提琴:http: //jsfiddle.net/v6DBB/

于 2013-08-09T19:08:02.850 回答
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 为空,所以我仍然收到警报。

于 2013-08-09T19:22:34.693 回答