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

JQuery/Ajax报错求助:获取HTML option标签值失败

问题排查与修复方案

嘿,我来帮你梳理下代码里的问题!你遇到的错误主要是语法和逻辑层面的,我一个个给你拆解:

  • $.ajax配置对象内不能直接声明变量:你在$.ajax()的参数对象里直接写了var id = $(this).val;,这是典型的语法错误——因为ajax接收的是一个配置对象,对象内部只能写键: 值的形式,不能在这里声明变量,得把变量定义移到ajax外面。

  • val是jQuery方法,必须加括号调用:$(this).val拿到的是方法本身,不是下拉框选中的值,得改成$(this).val()才能获取到实际选中的option值。

  • data参数的语法错误:data: {id = id}这种写法不符合JS对象的语法规则,键值对之间要用冒号:分隔,应该改成data: {id: id}。另外,你设置了contentType: "application/json",这时候需要把数据转换成JSON字符串,不然后端可能无法正确解析,所以得用JSON.stringify({id: id})。

  • this指向混乱:你把ajax逻辑套在$(function(){...})里面,这里的this并不是触发get_states函数的下拉框元素,会导致拿不到正确的选中值。建议把DOM就绪的回调用来绑定事件,而不是嵌套在函数内部。

修复后的完整代码示例

function get_states() {
  // 这里的this指向触发事件的select元素,正确获取选中值
  var id = $(this).val();
  
  $.ajax({
    url: 'competitors/get_states.php',
    method: 'post',
    contentType: "application/json",
    // 把对象转为JSON字符串,适配contentType配置
    data: JSON.stringify({id: id})
  }).done(function(msg){
    alert(msg);
  }).fail(function(msg, TxtStatus){
    alert("fallo: "+ TxtStatus);
  });
}

// 在DOM加载完成后,给下拉框绑定change事件
$(function() {
  // 替换成你实际的select元素ID或选择器
  $('#your-select-element').on('change', get_states);
});

这样调整后,应该就能正常获取option的值并发起ajax请求啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:45:23