Javascript jqueryajax可以';不能更改复选框状态
我正在尝试更改复选框状态,但它似乎不起作用。 这是我的代码:Javascript jqueryajax可以';不能更改复选框状态,javascript,jquery,ajax,checkbox,Javascript,Jquery,Ajax,Checkbox,我正在尝试更改复选框状态,但它似乎不起作用。 这是我的代码: $.ajax({ url:'includes/exproty.php', 键入:“post”, 数据:{ “产品标识”:“100” }, 成功:功能(数据){ var product_details=JSON.parse(数据); if(产品详细信息是否已发布){ 控制台日志(“工作”); $(“[name='active']”)。选中=true; }否则{ $(“[name='active']”)。选中=false; } } });
$.ajax({
url:'includes/exproty.php',
键入:“post”,
数据:{
“产品标识”:“100”
},
成功:功能(数据){
var product_details=JSON.parse(数据);
if(产品详细信息是否已发布){
控制台日志(“工作”);
$(“[name='active']”)。选中=true;
}否则{
$(“[name='active']”)。选中=false;
}
}
});
活跃的
使用if
中的console.log
,以便我确认满足条件并执行if
中的代码
我也试过:
$("[name='active']").prop('checked', true);
但它也不起作用
我确信该条件已满足并正在执行(多亏了console.log
)
如果需要更多的信息,请询问,我会尽力提供。谢谢 问题是因为jQuery对象没有选中的
属性。属于本机元素对象的。对于jQuery,应该使用prop()
如果这对您不起作用,那么您可能在AJAX逻辑中有错误,您应该检查控制台以进行诊断,或者您有多个具有name=“active”
属性的元素,在这种情况下,您应该使用不同的选择器
还要注意,您不需要手动调用JSON.parse()
。jQuery将自动为您反序列化响应,因此数据
将已经是一个对象。再次反序列化将导致错误。试试这个:
$.ajax({
url: 'includes/exproty.php',
type: 'post',
data: { product_id: '100' }, // consider changing this value to an int
dataType: 'json', // explicitly set return data type
success: function(data) {
$("[name='active']").prop('checked', product_details.is_published);
}
});
请尝试jquery属性
if (product_details.is_published) {
console.log("Works");
$("[name='active']").attr({'checked':'checked'});
} else {
$("[name='active']").attr({'checked':''});
}
您可能正在使用jquery1.6或更高版本。
试试这个。。
使用复选框id:
$(window.find(#checkboxid”).prop(“checked”,true)代码>
或使用复选框类(这将应用于所有使用的类标记)
$(window.find(“.classname”).prop(“选中”,true)代码>尝试以下测试-应该可以工作:
$("input[name='active']").attr( "checked", true);
$("input[name='active']").attr( "checked", false);
使用.prop('checked',true)
。它是jQuery专用的,include在数据:{'product\u id':'100',}
中发布
$.ajax({
url:'includes/exproty.php',
键入:“post”,
数据:{
“产品标识”:“100”,
“产品详细信息”:是否已发布
},
成功:功能(数据){
var product_details=JSON.parse(数据);
if(产品详细信息是否已发布){
控制台日志(“工作”);
$(“[name='active']”).prop('checked',true);
}否则{
$(“[name='active']”).prop('checked',false);
}
}
});代码>
活跃的
我可以向您保证,正确使用时,绝对有效:。如果您有问题,请检查控制台中是否有错误,并确保只有一个元素具有解析提示的name=“active”
attributeAnks,但它仍然不起作用。。。我只有一个同名元素,控制台中没有错误您检查过控制台中的错误了吗?不幸的是,简单地说“它不起作用”并不能给我们提供任何有用的信息来帮助诊断您所遇到的问题。在if语句之前添加这一行。可能数据没有返回您认为的内容。日志(“是否发布:+产品详细信息。是否发布”)@RoryMcCrossan我知道仅仅说“不工作”是不够的,但我不知道还能提供什么,我看不到任何控制台错误,而且据我所知,代码很好。。这就是为什么我说如果需要更多的信息,请告诉我,我会提供。由于无法首先复制,prop()
是更好的做法。其次,如果prop()
不起作用,那么这也不会起作用。必须存在另一个潜在问题仅供参考,如果只更改单个属性,则不需要将对象传递给.attr()
函数-您可以使用$(“[name='active']”)attr(“checked”,“checked”)
。