Jquery 在AJAX调用中设置变量?

Jquery 在AJAX调用中设置变量?,jquery,Jquery,我确信这很简单,但我似乎无法在AJAX请求中设置变量数据 我的servlet返回一个数字数组 int[] array = {1,2,4,5,3,5,3,5}; response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); response.getWriter().write(new Gson().toJson(array)); 数据被传递到jquery,

我确信这很简单,但我似乎无法在AJAX请求中设置变量数据

我的servlet返回一个数字数组

    int[] array = {1,2,4,5,3,5,3,5};

    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(new Gson().toJson(array));
数据被传递到jquery,我试图将json数据存储为jquery数组

    var test2 = [];
    $.post("servlet", { info: data},
                function(data) {
                    alert(data); // this alerts what i want stored...
                    test2.push(3); // testing if i can add 3 to test FAILS
                });
    test2.push(9); //this works
    test2.push(9); //this works
    options.series[0].data = test2;
为什么我不能通过ajax调用将数字推送到测试中


我想要的最终结果是设置options.series[0]。数据等于servlet返回的数据数组。请尝试使用完整的ajax函数,使用async:false

var test2 = [];
$.ajax({
   url: "servlet",
   async: false,
   type: "post",
   data: { info: data},
   success: function(data) {
                alert(data); // this alerts what i want stored...
                test2.push(3); // testing if i can add 3 to test FAILS
            });
});

已编辑:删除了错误的语句。

您如何判断推送失败?请记住,3将在9之后很久添加,因为您的AJAX请求是异步的

var test2 = [];
$.post("servlet", { info: data},
            function(data) {
                alert(data); // this alerts what i want stored...
                test2.push(3); // testing if i can add 3 to test FAILS
                alert(test2)
            });

为什么不在AJAX中设置变量,如下所示:

function(data){
    options.series[0].data=data;
}

但是,我还建议使用实际的$.ajax对象,因为它的功能。

我没有看到test2的任何变量声明。这是打字错误吗?是否触发了alertdata?重复的。我很确定test2.push3可以工作,你怎么知道它不工作呢;弹出1,2,4,5,3,5,3,5和test.push3不会被添加,因为我只需要在图表中输入数字。。9和9…您正在将test2分配给options.series[0]。数据,并且可能在调用成功回调之前绘制图表,这意味着在处理数据时,3尚未添加。但它肯定会被添加。一般来说,进行同步调用是一个糟糕的主意,因为它会冻结浏览器的UI。当然,您可以通过Ajax调用更改变量。当然,他可以更改该变量,问题是他何时检查it@Sinetheta:从什么时候开始同步请求是异步的?@Sinetheta:您可能错过了async:false。@LightnessRacesinOrbit:下面是一个虚构的同步调用示例。我把等待时间设置为5秒,你可以随意玩。请注意,无法滚动。这是我在这次讨论中的最后一句话,这是一次很好的讨论,我明白了你的观点:你只是把问题转移到了另一个变量中。我把图表调用移到了ajax请求中,这很有效。