ajax完成后,将数据从ajax函数传递给另一个函数

时间:2016-01-11 13:01:19

标签: javascript php jquery ajax

尝试从ajax调用向jvectormap传递数据,我有when函数,因此代码在ajax完成加载后运行

我遇到的问题是地图是空的,我收到错误

  

未捕获的ReferenceError:未定义postdata

这是我目前的代码

            $(document).ready(function() {

            function ajax1() {

                return $.ajax({
                    url: "src/data.php?form_action=call-map",
                    type: "GET",
                    data: postdata,
                    dataType: "text", // the type of data that you're expecting back from the server
                    error: function(jqXHR, textStatus, errorThrown) {
                        $().toastmessage("showErrorToast",
                            "AJAX call failed: "+textStatus+" "+errorThrown);
                    },
                    success: function(data) {
                        console.log(data);
                        //return false;
                    }
                });

            }

            $.when(ajax1()).done(function(a1){

                $('#world-map').vectorMap({
                    map: 'world_mill_en',
                    backgroundColor: "transparent",
                    regionStyle: {
                        initial: {
                            fill: '#e4e4e4',
                            "fill-opacity": 0.9,
                            stroke: 'none',
                            "stroke-width": 0,
                            "stroke-opacity": 0
                        }
                    },

                    series: {
                        regions: [{
                            values: a1,
                            scale: ["#005aad", "#001d38"],
                            normalizeFunction: 'polynomial'
                        }]
                    },
                    onRegionTipShow: function(e, el, code){
                        el.html(el.html()+ '<br>Time Used: '+mapData[code]);
                    }
                });
            });
        });

这是从ajax调用到php脚本的返回数据

{"AF" : 10, "AX" : 22, "AL" : 5, "DZ" : 0, "AS" : 41, "AD" : 74, "AO" : 30}

的console.log(数据);显示我需要传递给jvectormap的所有数据。

2 个答案:

答案 0 :(得分:0)

您的postdata变量未初始化(在此处发布的代码中!)更改此内容:

url: "src/data.php?form_action=call-map",
type: "GET",
data: postdata,
dataType: "text", // the type

到此:

url: "src/data.php",
type: "GET",
data: "form_action=call-map",
dataType: "text", // the type

但是,如果变量“postdata”对您有意义,请告诉我们您重视它的位置。

答案 1 :(得分:0)

我能够通过使用以下方法转换字符串中的数据类型来解决问题:

var a1 = JSON.parse(a1);

感谢。