JQuery:在ajax请求下:“uncaughtTypeError:非法调用”-几个元素

我有两个选择元素,A和B:当A的选择选项更改时,B的选项必须相应地更新。A中的每个元素都意味着B中的许多元素,这是一对多的关系(A包含国家,B应该包含位于给定国家的城市)

函数do\u ajax应运行异步请求:

函数do\u ajax(elem,mydata,filename)
{
$.ajax({
url:filename,
背景:elem,
数据:mydata,
数据类型:“html”,
成功:函数(数据、文本状态、xhr){
elem.innerHTML=数据;
}
});
}

为了更新B的选项,我在a的onChange事件中添加了一个函数调用。以下是触发onChange事件(属于A)时运行的函数:

函数my_onchange(e)/“e”是元素“A”
{
var sel_B=…;//获取选择元素“B”
//我跳过了一些代码
// ...
风险值数据={
“模式”:“过滤城市”,
'id_A':e[e.selectedIndex]
};
do_ajax(city_sel,data,'ajax_handler.php');
}

}

我在JQuery文档中读到,数据可以是一个数组(键值对)。如果我输入以下内容,则会得到错误:

var数据={
“模式”:“过滤城市”,
'id_A':e[e.selectedIndex]
};

相反,如果我的数据是字符串,则不会出现该错误:

var数据='mode=filter\u city&id_A='+e[e.selectedIndex];

但是我需要变量的“数组版本”,在我的服务器端php代码中

uncaughttypeerror:invalical invocation位于“jquery-1.7.2.min.js”文件中,该文件已全部压缩,因此我无法确定是哪部分代码引发了错误

我的代码中是否有任何设置可以更改,以便它将数据作为关联数组接受

多亏了与萨尔弗拉兹的谈话,我们才找到了解决办法

问题是我传递的是一个HTML元素而不是它的值,这实际上是我想要做的(事实上,在我的php代码中,我需要该值作为外键来查询我的cities表并过滤正确的条目)

因此,不是:

var数据={
“模式”:“过滤城市”,
'id_A':e[e.selectedIndex]
};

应该是:

var数据={
“模式”:“过滤城市”,
'id_A':e[e.selectedIndex]。值
};

注意:检查Jason Kulatunga的答案,它引用JQuery文档来解释传递HTML元素会导致问题的原因

发表评论