异步回调函数(JSON)在opera,safari和ie7中不起作用

时间:2011-07-04 13:41:57

标签: jquery json internet-explorer-7

请原谅我糟糕的英语..

我的脚本在firefox 5中工作,即8,但不是在ie7,opera 9.5,safari ..

应使用数据库查询检查每个复选框,是否需要激活

脚本:

$('.merkzettel').each(function(){   
        var name =  $(this).attr("value");
    var url = "istInMappe.php?id=" + session_id + "&bild=" + name;
    $.getJSON(url,function(data){
            checken (data.checked, data.number);

    });
});
function checken (bool, number){
if (bool == "checked"){
    var elem = "#img" + number;
    $(elem).attr('checked','checked');  
}

}

脚本中的答案(istInMappe.php?...)在opera中是正确的: { “检查”: “未登记”, “数字”: “1553”} 没有错误信息..

但是没有执行“checken”功能,也没有选中复选框,没有错误信息..

html /复选框(例如)

<input type="checkbox" id="img1566"  class="merkzettel" name="merkzettel1566" value="img_1566.jpg"/>

我没有找到错误。有人有个主意吗? 非常感谢... 萃


我修改了脚本,现在一个请求查询存储在db中的checkbox-numbers,但我仍然遇到opera的问题,即7,safari等。

也许有另一种方式?

function checken (nummer){
    var elem = "#img" + nummer;
    $(elem).attr('checked',true);   

}


function start(){

    var url = "fileadmin/php/refreshCheckboxes.php?id=" + session_id;
    $.get(url,function(data){
        $.each(data.posts, function(i,data){
            //alert (data.number);
            checken (data.number);

        }); 
    });
 }

 $(".load").click(function()
 {
 start();
  return false;
  });

http://www.ruth-schuette.com/gesamtwerk/in-arbeit.html

我非常感谢任何想法,因为我已经好几天都在努力了

1 个答案:

答案 0 :(得分:1)

你说JSON看起来像这样:

{"checked":"unchecked","number":"1553"}

但您的代码引用“nummer”,而不是“number”:

checken (data.checked, data.nummer);

几点说明:

  • 您可以使用“.val()”获取<input>的值:

    var name = $(this).val(); // or just this.value
    
  • 当您设置“radio”或“checkbox”输入的“checked”属性时,您可以使用布尔值,因为这就是浏览器无论如何都会解释该值:

    $(elem).attr('checked', true);
    

编辑 - 我不知道为什么它在Chrome中不起作用。 HTTP请求似乎都发生了,响应看起来还不错,但永远不会调用成功处理程序。

我会提出这样的建议,即使它确实有效,但获取这些信息的速度非常慢。如果您能够弄清楚在准备页面时检查了什么,或者至少有一个返回整个地图的调用,那就更好了。制作所有这些HTTP请求需要一段时间。