【问题标题】:jQuery storing values outside function not workingjQuery在函数外存储值不起作用
【发布时间】:2016-06-01 13:28:33
【问题描述】:

我正在构建这个 jQuery 函数,以便在单击按钮时从我的后端获取数据。我一直在阅读How do I return the response from an asynchronous call? 对类似问题的回答,并应用了 jQuery 延迟对象解决方案,如下所示。

var results; 
function ajax() {
    var keyword = prompt("Enter keyword you wish to search for");
    return  $.ajax({
                type: "GET",
                url: "http://localhost:8080/getGeojson"+keyword,
                data: {},
                dataType: 'json',              
                success: function (data) {
                    return(data);
                    console.log(data);
                }
            });
}


$('#keywordSearch').click(function() {
    ajax().done(function(result) {
        results = result;
        console.log("something went right");
    }).fail(function() {
        console.log("something went wrong");
    });
});

但是此代码仍然无法正常工作。它得到结果,我在控制台日志中看到它们,但结果仍然没有存储在全局变量结果中。它仍然未定义。

任何帮助将不胜感激。

谢谢!

【问题讨论】:

    标签: jquery ajax function get global-variables


    【解决方案1】:

    在您的函数中,我没有看到您实际分配了结果变量。 您可能需要将 results = data; 添加到您的 ajax 函数中。

    function ajax() {
        var keyword = prompt("Enter keyword you wish to search for");
        return  $.ajax({
                    type: "GET",
                    url: "http://localhost:8080/getGeojson"+keyword,
                    data: {},
                    dataType: 'json',              
                    success: function (data) {
                        results = data;
                        return(data);
                        console.log(data);
                    }
                });
    }
    

    如果您有任何其他问题,请发表评论。

    【讨论】:

    • 仅当请求成功时,我才在单击关键字搜索按钮(结果 = 结果)时保存变量。据我了解,它应该与您的添加做同样的事情,但使用 JS 承诺
    • 添加您建议的行不起作用。我猜它与异步有关?
    • 如果您在点击实例中添加控制台日志,结果是返回一些内容还是未定义?
    • 这确实很奇怪。您是否可以使用 codepen.io 来做一个上面的小例子。也许不要使用实际的 ajax 调用,而是尝试使用基本函数。
    • 这里是示例代码笔的链接。当我这样做时,它会起作用。 codepen.io/RaimoGIS/pen/aZONjj?editors=1111 。问题一定出在 ajax 调用中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 2013-03-27
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    相关资源
    最近更新 更多