我正在使用Codeigniter应用程序,并且在页面中我使用jQuery对控制器内的函数进行Ajax调用。我将从页面中获取的一些值传递给此函数;该函数进行一些计算,然后我必须显示结果。所有这一切都没有刷新页面。
ajax代码是这样的:
$.getJSON("photos/change_product", {product_id: product_type, ajax: 'true'}, function(data) {
var options = [];
for (var i = 0; i < data.length; i++)
{
options.push('<option value="' + data[i].id + '">' + data[i].label + '</option>');
}
$("select#options").html(options.join(''));
})
};
当我从某个html元素上的click事件触发它时,它工作得很好。问题是我第一次加载页面时也需要它运行。所以我认为我可以将该代码移动到一个函数中,然后在我需要的地方调用它。所以,我用上面的代码创建了一个changeProduct函数,然后像这样调用它:
$(document).ready(function() {
function changeProduct(product_type) {
$.getJSON("photos/change_product", {product_id: product_type, ajax: 'true'}, function(data) {
var options = [];
for (var i = 0; i < data.length; i++)
{
options.push('<option value="' + data[i].id + '">' + data[i].label + '</option>');
}
$("select#options").html(options.join(''));
})
};
var selected_product = $("ul#products li:first-child a");
changeProduct(selected_product);
这导致页面刷新无限循环。我怎么能避免这个?我应该创建计数器和条件还是有更好的方法?
已解决:问题出在selected_product变量中。它应该是这样的:
var selected_product = $("ul#products li:first-child a").val();
答案 0 :(得分:2)
是因为'selected_product'是一个jquery对象吗?你想做一些像$(“ul#products li:first-child a”)。text()来取得它的价值吗?