javascript & jQuery 作用域问题

标签 javascript jquery

我有以下方法:

    function priceRange(FESTIVALID){
                      jQuery.ajax({
                            url     : '/actions/festheads.cfc?method=getPriceRangeByGUID',
                            type    : 'POST',
                            data    : 'FESTIVALID='+FESTIVALID,
                            dataType: 'json',
                            success : function(data) {
                                console.info("AJAX:qPrices",data.MINPRICE);

                                    formatedPriceRange = '$ '+data.MINPRICE;
                                    console.info("AJAX:formatedPriceRange", formatedPriceRange);

                                }//success
                            });//ajax;


                    //
                    return formatedPriceRange;
                };

第二个 console.info 正确显示了格式化的价格范围, 但在函数之外是未定义的。

如何在 priceRange 函数之外访问这个变量? 谢谢

最佳答案

这很正常,这就是 AJAX 的工作原理。它是异步的,这意味着 jQuery.ajax 函数会立即返回,在这种情况下 formatedPriceRange 还没有被分配一个值,一旦服务器响应(例如10 秒后),调用成功回调并为变量赋值。

因此,始终在 success 回调函数中使用 AJAX 请求的结果。

您还可以将 async: false 选项传递给您的 jQuery.ajax调用将对服务器执行同步请求并阻塞,直到检索到结果。显然,这将导致您的浏览器在执行请求期间卡住。所以它将不再是 AJAX(异步 Javascript 和 Xml),而是 SJAX(同步 Javascript 和 Xml)。

关于javascript & jQuery 作用域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5465005/

相关文章:

javascript - Ajax.ActionLink Button , 1 switch 禁用页面中所有现有按钮

javascript - 弹出日历显示本地日期,但所选日期为 UTC

javascript - 如何在 Material-UI 中覆盖卡片组件中的 "MuiPaper-elevation1"属性?

javascript - 如何使用 timeinterval ionic 3 运行 for 循环

javascript - 仅当另一个元素存在时才显示元素

jquery - 如何创建 Ajax 弹出表单并提交表单

javascript - 什么时候使用哪个引号?

javascript - insertAdjacentHTML 有问题吗?

javascript - 使用 Vanilla javascript 设置 AJAX 数据类型?

javascript - Karma 找不到配置文件中指定的文件