我有两个select元素,A和B:当A的选定选项发生变化时,B的选项必须相应地更新。A中的每个元素都包含B中的多个元素,这是一对多关系(A包含国家,B应该包含位于给定国家的城市)。
函数do_ajax
应该运行异步请求:
function do_ajax(elem, mydata, filename)
{
$.ajax({
url: filename,
context: elem,
data: mydata,
datatype: "html",
success: function (data, textStatus, xhr) {
elem.innerHTML = data;
}
});
}
为了更新B的选项,我在A的onChange
事件中添加了一个函数调用。下面是触发(A
的) onChange事件时运行的函数:
function my_onchange(e) // "e" is element "A"
{
var sel_B = ... ; // get select element "B"
// I skipped some code here
// ...
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
do_ajax(city_sel, data, 'ajax_handler.php');
}
}
我在JQuery docs中读到data
可以是一个数组(键值对)。如果我放入以下内容,我会得到错误:
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
相反,如果我的数据是一个字符串,我就不会得到这个错误:
var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];
但是在我的服务器端php代码中,我需要变量的“数组版本”。
Uncaught TypeError: Illegal invocation
位于"jquery-1.7.2.min.js“文件中,该文件都是压缩的,所以我不知道是哪部分代码引起了这个错误。
在我的代码中有没有什么我可以修改的设置,这样它就可以接受数据作为一个关联数组?
发布于 2018-01-29 23:35:40
我在发布一个FormData对象时遇到了这个错误,因为我没有正确地设置ajax调用。下面的设置解决了我的问题。
var myformData = new FormData();
myformData.append('leadid', $("#leadid").val());
myformData.append('date', $(this).val());
myformData.append('time', $(e.target).prev().val());
$.ajax({
method: 'post',
processData: false,
contentType: false,
cache: false,
data: myformData,
enctype: 'multipart/form-data',
url: 'include/ajax.php',
success: function (response) {
$("#subform").html(response).delay(4000).hide(1);
}
});
发布于 2017-04-10 23:21:52
最近遇到了同样的问题,通过添加traditional: true,
解决了这个问题
发布于 2020-12-07 18:55:54
请按照以下步骤解决此问题:
$.ajax({
url: 'https://your-api-endpoint',
type: 'post',
data: new formData(this),
processData: false,
contentType: false,
success: function(response) {
console.log(response)
}
})
您必须使用processData: false和contentType: false这两行代码。你的问题就解决了。
https://stackoverflow.com/questions/11071100
复制相似问题