You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何使用jQuery的回调函数无法获取数据?

解决AJAX回调无法获取数据的问题

看起来你Postman测试接口完全正常,但AJAX回调就是拿不到数据,主要是代码里有几个容易忽略的小问题,我帮你一一排查并修正:

问题1:AJAX请求的参数配置错误

你的AJAX请求里,data: "data"这一行是无效的——如果GET请求不需要传递参数,直接删掉这个字段就行;如果需要传参,应该写成键值对格式(比如data: { id: 123 })。另外,GET请求通常不需要设置contentType,因为GET参数是拼接在URL上的,而非放在请求体里。

问题2:$.each遍历语法错误

你在回调里写的$.each(function (data) { ... })完全不符合语法规范,$.each的正确用法是第一个参数是要遍历的数组/对象,第二个参数是遍历回调(包含索引和当前项)。你现在没有传入要遍历的接口返回数据data,所以遍历逻辑根本没执行。

问题3:未声明变量的潜在问题

你在遍历里用的selected变量没有提前声明,会自动变成全局变量,这是不好的编程习惯,建议用let或者var明确声明。


修正后的完整代码

// 修正后的AJAX请求函数
function GetSelected() {
  $.ajax({
    type: 'GET',
    url: '/api/machine/',
    dataType: "JSON",
    // 去掉无效的data和contentType(GET请求不需要)
    success: backcall
  });
};

// 修正后的回调函数
function backcall(data) {
  // 统一变量名大小写,避免混淆;转成数字再做加法,防止字符串拼接错误
  let selectmachine = $("#selectmachine").val();
  let selectMachineNum = parseInt(selectmachine) + 1; 
  alert('接口已返回数据!');
  
  // 正确的$.each用法:传入要遍历的data,回调里获取当前项
  $.each(data, function(index, item) {
    if (item.machinenumber === 3) {
      let selected = item.selected;
      alert('匹配到的selected值:' + selected);
    }
  });
};

额外说明

  • 如果你的GET接口需要传递参数,比如根据ID查询,把data改成data: { someKey: someValue }即可,jQuery会自动帮你拼接到URL上。
  • 一定要把selectmachine转成数字再做加法,不然字符串拼接会得到类似"2"+1="21"的错误结果。
  • 现在回调里的$.each会正确遍历接口返回的数组,当找到machinenumber为3的项时,就能正常弹出对应的selected值了。

内容的提问来源于stack exchange,提问作者Peter Gade Carstensen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 20:42:30