如何解决以下问题?
错误:语法错误,无法识别的表达式:#commodity_type"+i+“ 抛出新错误(“语法错误,无法识别的表达式:”+ a)
来自以下脚本:
$("#stock_request_table").on("change", ".commodity_name" + i, function () {
var commodity_id = this.value;
$.ajax({
type: "GET",
url: "<?php echo base_url(); ?>reports/get_commodity_details/" + commodity_id + "/",
dataType: "json",
success: function (response) {
$('#commodity_type"+i+"').val(response[0].commodity_type);
},
error: function (data) {
}
});
});发布于 2015-09-17 10:04:26
您实际上是将字符串#commodity_type"+i+"作为CSS选择器传递给jQuery。尾随的+使选择器无效,但在任何情况下,您几乎肯定不希望i在字符串中实际存在;相反,我假设您想要它的值。
假设您知道在收到ajax响应之前i不会更改,那么只需调整引号:
$('#commodity_type' + i).val(response[0].commodity_type);
// ^---- string ends there, and we append i但是,如果这段代码处于i可能更改的循环中,则需要一个不会更改的值。您可以使用Function#bind获得一个:
success: function (index, response) {
$('#commodity_type' + index).val(response[0].commodity_type);
}.bind(null, i)注意结尾处的.bind(null, i)。Function#bind返回一个函数,当调用该函数时,this将调用原始函数,并将其设置为第一个参数(我们不关心this,因此我只是传递null),然后是传递bind的参数,然后是调用绑定函数的参数。因此,.bind(null, i)将在此时接受i的值,并在调用原始函数时使用该值作为第一个参数。然后是jQuery给出的success函数的参数。
https://stackoverflow.com/questions/32627414
复制相似问题