2012-02-21 46 views
0

我想获得一个ajax请求来勾选一个框,如果返回一定的值。ajax复选框调用

基本上我有以下代码:

 for(var id in data) {   
       $(id).val(data[id]); 
       if($(newsletter).val(data[newsletter])) { 

         $('#newsletter').prop('checked', true); 

       } 
    } 

现在,我已经试过下面的代码并没有骰子。然而

for(var id in data) {   
       $(id).val(data[id]); 
       if($(newsletter).val(data[newsletter] == 1)) { 

         $('#newsletter').prop('checked', true); 

       } 
    } 

这将蜱任何结果的复选框,如果返回值是1,我想它再勾选如果另一个返回值是我想它不会被选中。

如果我做错了什么,请让我知道,因为我是jQuery和stackoverflow的新手。

+0

在第一种情况下,您在$('#newsletter')后写了'$(newsletter)'。为什么?他们是不同的对象?在哪里id通讯定义? “data”包含什么?代码的其余部分在哪里?更加详细一些! – papaiatis 2012-02-21 07:43:06

回答

0

也许这可能工作:if($(newsletter).val() == 1... 或:if(data[newsletter] == 1)...

看来你是有缺失的分配: 也许你的意思是var newsletter = $(id).val(data[id]);我不能弄明白。请解释一下,通讯是如何声明的。

+0

嗨,从json返回的数组是:'$ arr = array('input#fname'=> $ fname,'input#lname'=> $ lname,'#emailAddress'=> $ email,'#newsletter '=> $ newsletter); echo json_encode($ arr);'所以代码本身通过json来自PHP。 – 2012-02-22 07:29:59

0

我打算假设data是通过AJAX返回的对象,而data[newsletter]是访问该对象某些属性的有效方式,您需要检查该对象的值。

如果是的话,那么下面应该工作:

if (data[newsletter] === 1) { 
    $('#newsletter').prop('checked', true); 
} 

此外,该代码if($(newsletter).val(data[newsletter] == 1)) {是设置它检查是否有值的原因是因为你实际上是用if测试是返回值来自.val()调用,这是一个jQuery对象,,即使没有与选择器匹配的元素,它总是会评估为true。

Protip:如果您想检查jQuery选择器是否与任何元素匹配,请测试.length属性。

例如

if ($('.my_selector:eq(0)').length) { 
    alert('Found one!'); 
}