Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqueryajax可以';不能更改复选框状态_Javascript_Jquery_Ajax_Checkbox - Fatal编程技术网

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”)