在ajax

时间:2015-07-23 16:03:56

标签: javascript php jquery ajax json

如何在函数外部的函数中使用变量。 console.log(响应)显示内容是从php获取的。警报(lng)显示未定义。为什么?这个脚本可能会出现什么问题。我已经有一段时间了。

下面是

脚本。

    var lat;
    var lng ;
    $.ajax({
            type: 'GET',
            url: 'getlocation.php',
            data: 'param=no' ,
            dataType: 'JSON',
            success: function (response) {
                console.log(response);
                lat = response.latitude;
                lng = response.latitude;
            },
            error: function (response){
                alert (response);
            }

        });
    alert( lng);

1 个答案:

答案 0 :(得分:3)

因为代码运行到行lng时未设置变量alert(lng)

Ajax调用是异步的。这意味着,JS引擎进入流程:

  1. 发出http请求($.ajax...
  2. (此时,由于网络操作很慢,因此JS引擎选择继续执行以下行。它在响应完成后返回。)

    1. 运行到行alert(lng)。此时,它仍然是undefined
    2. 请求响应成功/错误,然后运行相应的回调函数function(response)...。回调函数内的警报将获得您想要的结果。