【问题标题】:ajax function is not working in my JavaScript function function skip the ajaxajax 函数在我的 JavaScript 函数中不起作用 跳过 ajax
【发布时间】:2020-05-23 07:40:14
【问题描述】:

不执行ajax函数返回

function weekData(){
    var weekCount={};

 $.ajax({
         url:"http://localhost:8080/getWeeeks",
         headers: {
         'Content-Type': 'application/x-www-form-urlencoded'
     },
     type:"GET",
         dataType:"json",
         data:{},

         success:function(data){

             for (var i = 0; i < data.length; i++) {
             weekCount[i]=data[i];

             }   
             debugger
             return weekCount;       

         },

     });

     return weekCount ;            
    }
var circle = weekData();

【问题讨论】:

  • 当我使用调试器显示函数跳转到最后一个 return weekcount 语句而不执行 ajax 函数和返回后,它涉及到 ajax 为什么会这样?

标签: jquery html ajax twitter-bootstrap


【解决方案1】:

您需要在服务器端添加error 方法和检查请求,以确保您的ajax 调用工作正常。

error: function (request, status, error) {
    alert(request.responseText);
}


更新

有很多方法可以从 ajax 响应中获取结果

  1. 使用async: false 使 ajax 响应同步,如下所示
   $.ajax({
         url:"http://localhost:8080/getWeeeks",
         headers: {
         'Content-Type': 'application/x-www-form-urlencoded'
         },
         async: false // This setting make ajax response in sync.
         ...
// Note that: It's not a good approach because of its deprecation and stuck the page untill the request comes back.
  1. 返回 promise 然后操作完成的函数
function weekData() {
    return $.ajax({
        url: "http://localhost:8080/getWeeeks",
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        type: "GET",
        dataType: "json",
        data: {}
    });
}

var weekCount = [];
weekData().done(function(data) {
    for (var i = 0; i < data.length; i++) {
        weekCount[i] = data[i];
    }
});
  1. 使用callback function

【讨论】:

  • 这不是答案。只是为了确保是否发出请求,控制台日志也足够了。
  • 我刚刚更新了我的答案,请看一下(如果需要,请收回反对票)@Zeeshan Eqbal
  • 愉快地完成
【解决方案2】:

从 ajax 调用中删除数据对象。方法类型为“GET”时,无需发送任何数据对象。

data:{}

【讨论】:

  • 嘿,谢谢你的建议,但问题还是一样,我的问题是 ajax 部分是在方法从最后一个 return 语句返回 null 和返回后在 ajax 上的方法 c0me 之后执行的声明
【解决方案3】:

解决方案:

Ajax 调用本质上是异步的,默认为 true。

有两种方法可以解决这个问题:

首先使用简写Ajax函数并将结果存入weekCount

 var weekCount = $.get( "ttp://localhost:8080/getWeeeks", function( data ) {
  return data.your-object-name;
});

第二个选项

使用setTimeOut()函数确保请求完成。

然后回调将响应存储在weekCount中;

【讨论】:

  • 在我看来,使用setTimeout 不是一个好方法。它被称为作弊码。检查my answer以更好地了解。
猜你喜欢
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 2015-04-19
  • 1970-01-01
  • 2019-12-02
  • 2012-07-14
相关资源
最近更新 更多