jQuery存储函数外的值不起作用

时间:2016-06-01 13:28:33

标签: jquery ajax function get global-variables

我正在构建这个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");
    });
});

但是这段代码仍无效。它得到结果,我在控制台日志中看到它们,但结果仍然没有存储在全局变量结果中。它仍未定义。

任何帮助都将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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