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

JavaScript中Ajax请求URL传递多参数实现及调用报错解决

错误原因

你的代码触发错误主要有两个明确问题:

  • 函数调用语法错误:调用request时括号位置错误,将两个入参和后续的.done()调用包裹在同一层括号内,JS引擎无法正确解析参数传递逻辑和Promise链式调用规则
  • 手动拼接URL存在两个隐患:一是代码里的&是HTML转义字符,在JS字符串中需要直接写&,否则会被识别为参数值的一部分;二是未对参数值做编码处理,参数携带特殊字符时会导致URL格式非法
推荐实现(无需手动拼接URL)

jQuery的$.ajax对GET请求做了参数自动处理,不需要手动在URL后拼接查询串,把所有参数放到data字段即可,框架会自动完成拼接、特殊字符转义工作,稳定性更高:

function request(time, clientId) {
  return $.ajax({
    url: 'https://myURL/api/v1/get-infoDevices',
    type: 'GET',
    dataType: 'json',
    data: {
      value: 'Logs',
      duration: 86400000,
      time: time,
      ID: clientId
    }
  });
}

说明:GET请求不需要设置contentType: 'application/json',这个配置是给POST请求传递JSON请求体用的,加了反而可能触发不必要的跨域预检请求。

手动拼接URL的修正写法

如果需要手动拼接URL,需要对参数值做URL编码,同时替换错误的转义字符:

function request(time, clientId) {
  return $.ajax({
    url: `https://myURL/api/v1/get-infoDevices?value=Logs&duration=86400000&time=${encodeURIComponent(time)}&ID=${encodeURIComponent(clientId)}`,
    type: 'GET',
    dataType: 'json'
  });
}
正确的调用写法

修正括号位置,两个参数按顺序传入request函数,函数调用闭合后再接.done()回调:

request(input.dashboard.time, input.ctx.clientId).done((res) => {
  // 此处写请求成功后的业务逻辑
  console.log(res)
})

内容的提问来源于stack exchange,提问作者gabreuneto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:27:20