在 Select2 中将参数传递给 Ajax 请求
Passing parameters to Ajax request in Select2
我有这个功能:
function tagsInputFabricantes(data) {
console.log(data);
var fabricante_distribuidor_id = data.ent.id,
producto_solicitud_id = data.ent.idProductoSolicitud,
fabricante_producto_solicitud_id = data.ent.idFabricanteProductoSolicitud;
$('#tagsInputFab-' + data.ent.idFabricanteProductoSolicitud).select2({
placeholder: 'Seleccione uno o más países',
closeOnSelect: false,
multiple: true,
width: '100%',
ajax: {
dataType: 'json',
cache: true,
quietMillis: 2000, // waits 2 seconds before triggers the search
url: function () {
return Routing.generate('obtenerPaisesNoAgregadosFabricante');
},
data: function (pais, fabricante_distribuidor_id, producto_solicitud_id, fabricante_producto_solicitud_id) {
return {
filtro: pais,
fabricante_distribuidor_id: fabricante_distribuidor_id,
producto_solicitud_id: producto_solicitud_id,
fabricante_producto_solicitud_id: fabricante_producto_solicitud_id
}
},
results: function (data) {
return {
results: data.entities
};
}
},
formatAjaxError: function () {
return Translator.trans('mensajes.msgNoConexionServidor', {}, 'AppBundle');
}
});
}
我需要将三个额外的参数传递给 Ajax 查询以通过 REQUEST 发送,这就是我正在做的事情:
console.log(data); // watch wath is getting in this object
// Gets the values and assign to vars
var fabricante_distribuidor_id = data.ent.id,
producto_solicitud_id = data.ent.idProductoSolicitud,
fabricante_producto_solicitud_id = data.ent.idFabricanteProductoSolicitud;
....
// Pass needed parameters as extra parameters for data
data: function (pais, fabricante_distribuidor_id, producto_solicitud_id, fabricante_producto_solicitud_id) {
return {
filtro: pais,
fabricante_distribuidor_id: fabricante_distribuidor_id,
producto_solicitud_id: producto_solicitud_id,
fabricante_producto_solicitud_id: fabricante_producto_solicitud_id
}
}
但它不起作用,因为 URL 仅包含以下内容:url&filtro=&fabricante_distribuidor_id=1&producto_solicitud_id=&fabricante_producto_solicitud_id=
,这是错误的。 console.log()
将此记录到控制台:
Object {success: true, ent: Object}
ent: Object
id: 1
idFabricanteProductoSolicitud: 18
idProductoSolicitud: 18
nombre: "Dist1"
pais: ""
__proto__: ...
哪里出错了?为什么参数没有传递给 data
函数?我做错了什么?
问题在于您正在定义需要作为函数参数发送的查询参数。因为没有通过函数参数传入任何内容,所以变量被设置为 false
而不是采用全局设置的值。
data: function (pais, fabricante_distribuidor_id, producto_solicitud_id, fabricante_producto_solicitud_id) {
// parameters 2, 3, and 4 are `undefined`
return {
filtro: pais,
fabricante_distribuidor_id: fabricante_distribuidor_id,
producto_solicitud_id: producto_solicitud_id,
fabricante_producto_solicitud_id: fabricante_producto_solicitud_id
}
}
现在,如果您删除这些参数,它们应该采用下一个范围的值。这是您根据传入数据设置它们的地方,这就是您的目标。
data: function (pais) {
return {
filtro: pais,
fabricante_distribuidor_id: fabricante_distribuidor_id,
producto_solicitud_id: producto_solicitud_id,
fabricante_producto_solicitud_id: fabricante_producto_solicitud_id
}
}
这应该会为您提供所需的内容,即所有要传递到 url 的 ID。
我有这个功能:
function tagsInputFabricantes(data) {
console.log(data);
var fabricante_distribuidor_id = data.ent.id,
producto_solicitud_id = data.ent.idProductoSolicitud,
fabricante_producto_solicitud_id = data.ent.idFabricanteProductoSolicitud;
$('#tagsInputFab-' + data.ent.idFabricanteProductoSolicitud).select2({
placeholder: 'Seleccione uno o más países',
closeOnSelect: false,
multiple: true,
width: '100%',
ajax: {
dataType: 'json',
cache: true,
quietMillis: 2000, // waits 2 seconds before triggers the search
url: function () {
return Routing.generate('obtenerPaisesNoAgregadosFabricante');
},
data: function (pais, fabricante_distribuidor_id, producto_solicitud_id, fabricante_producto_solicitud_id) {
return {
filtro: pais,
fabricante_distribuidor_id: fabricante_distribuidor_id,
producto_solicitud_id: producto_solicitud_id,
fabricante_producto_solicitud_id: fabricante_producto_solicitud_id
}
},
results: function (data) {
return {
results: data.entities
};
}
},
formatAjaxError: function () {
return Translator.trans('mensajes.msgNoConexionServidor', {}, 'AppBundle');
}
});
}
我需要将三个额外的参数传递给 Ajax 查询以通过 REQUEST 发送,这就是我正在做的事情:
console.log(data); // watch wath is getting in this object
// Gets the values and assign to vars
var fabricante_distribuidor_id = data.ent.id,
producto_solicitud_id = data.ent.idProductoSolicitud,
fabricante_producto_solicitud_id = data.ent.idFabricanteProductoSolicitud;
....
// Pass needed parameters as extra parameters for data
data: function (pais, fabricante_distribuidor_id, producto_solicitud_id, fabricante_producto_solicitud_id) {
return {
filtro: pais,
fabricante_distribuidor_id: fabricante_distribuidor_id,
producto_solicitud_id: producto_solicitud_id,
fabricante_producto_solicitud_id: fabricante_producto_solicitud_id
}
}
但它不起作用,因为 URL 仅包含以下内容:url&filtro=&fabricante_distribuidor_id=1&producto_solicitud_id=&fabricante_producto_solicitud_id=
,这是错误的。 console.log()
将此记录到控制台:
Object {success: true, ent: Object}
ent: Object
id: 1
idFabricanteProductoSolicitud: 18
idProductoSolicitud: 18
nombre: "Dist1"
pais: ""
__proto__: ...
哪里出错了?为什么参数没有传递给 data
函数?我做错了什么?
问题在于您正在定义需要作为函数参数发送的查询参数。因为没有通过函数参数传入任何内容,所以变量被设置为 false
而不是采用全局设置的值。
data: function (pais, fabricante_distribuidor_id, producto_solicitud_id, fabricante_producto_solicitud_id) {
// parameters 2, 3, and 4 are `undefined`
return {
filtro: pais,
fabricante_distribuidor_id: fabricante_distribuidor_id,
producto_solicitud_id: producto_solicitud_id,
fabricante_producto_solicitud_id: fabricante_producto_solicitud_id
}
}
现在,如果您删除这些参数,它们应该采用下一个范围的值。这是您根据传入数据设置它们的地方,这就是您的目标。
data: function (pais) {
return {
filtro: pais,
fabricante_distribuidor_id: fabricante_distribuidor_id,
producto_solicitud_id: producto_solicitud_id,
fabricante_producto_solicitud_id: fabricante_producto_solicitud_id
}
}
这应该会为您提供所需的内容,即所有要传递到 url 的 ID。