如何解决以下问题?
错误:语法错误,无法识别的表达式:#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) {
}
});
});
答案 0 :(得分:0)
您实际上是将字符串#commodity_type"+i+"
作为CSS选择器传递给jQuery。尾随+
使该选择器无效,但无论如何,您几乎肯定不希望{/ 1}实际上在字符串中;相反,我认为你想要它的价值。
假设您知道在收到ajax响应之前i
不会更改,您只需调整引号:
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
,所以我只是传递{{ 1}}),然后传递this
的参数,然后是调用绑定函数的参数。因此null
将在此时获取bind
的值,并在调用原始函数时将该值用作第一个参数。然后它将跟随jQuery提供.bind(null, i)
函数的参数。