$ .ajax()函数中的变量在函数外部给出未定义的值

时间:2012-12-28 13:32:33

标签: javascript html5 jquery

我正在使用html5创建一个网页。问题是我从一个url中获取一个json并在控制台上打印它的结果。我在函数中得到了预期的结果,但没有把它带到它之外。即使变量是全局的。请参阅以下代码

<script src="jquery-1.8.3.min.js"></script>

<script>
$(document).ready(function(){
    var result;
    $.ajax({
        type: 'GET',
        url: 'http://192.168.1.5:3333/abc.json',
        async: false,
        jsonpCallback: 'jsonCallback',
        contentType: "application/json",
        dataType: 'jsonp',
        success: function(data) {
            //var result = $(this).html(JSON.stringify(data));
            //console.log(JSON.stringify(data));
            result = JSON.parse(JSON.stringify(data));
            console.log(result); // Result : 1
        },
        error: function(e) {
            alert(e.message);
        }
    });

   console.log("here::"+result); // Result : 2
});
</script>

我的结果为

    2  here:undefined
    1    object                     (json)

我需要这个json进行解析。

1 个答案:

答案 0 :(得分:3)

文档非常清楚:

  

跨域请求和dataType:&#34; jsonp&#34;请求不支持同步操作。

基本上,这意味着您的async: false根本没有被使用,这解释了行为。

另请参阅:jQuery.ajax()