Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.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 jQuery.InArray();动态JSON数组_Javascript_Php_Jquery_Ajax_Json - Fatal编程技术网

Javascript jQuery.InArray();动态JSON数组

Javascript jQuery.InArray();动态JSON数组,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我有一个Ajax请求,返回的JSON数组格式如下: [101, 102] 数组中的数据是存储在数据库中的图像ID 我想做的是显示页面上的所有图像,每个图像旁边都有一个复选框。如果图像id在上面的数组中,则我希望选中复选框 除了选中复选框外,所有操作都正常工作 以下是我的代码片段: $.get('get_thumbs.php?category=' + selected, function (data) { $.get('get_selected_photos.php?product_id=

我有一个Ajax请求,返回的JSON数组格式如下: [101, 102] 数组中的数据是存储在数据库中的图像ID

我想做的是显示页面上的所有图像,每个图像旁边都有一个复选框。如果图像id在上面的数组中,则我希望选中复选框

除了选中复选框外,所有操作都正常工作

以下是我的代码片段:

$.get('get_thumbs.php?category=' + selected,
function (data) {
    $.get('get_selected_photos.php?product_id=' + product,
        function (returned) {
            po = $.parseJSON(returned);
        });
    var d = $.parseJSON(data);
    if (d != null) {
        var fieldWrapper = $("<ul>");
        $.each(d, function (index, value) {
            var checked = "";
            var fName = $("<li><img src=\"../" + value["thumb"] + "\"</li>");

            var fType = $('<input>', {
                type: "checkbox",
                id: "checkbox" + value["photo_id"],
                value: value["photo_id"],
                checked: ($.inArray(value["photo_id"], po) > 0 ? true : false)
            });

            fType.click(function () {
                var intId = $(this).val();
                if ($(this).is(':checked')) {
                    var sel = $(this).val();
                    $.get('get_sizes.php?photo_id=' + sel,
                        function (data) {
                            var d = $.parseJSON(data);
                            var tableWrapper = $("<div class=\"fieldwrapper\" id=\"field" + intId + "\"/>");
                            var tName = d;
                            tableWrapper.append(tName);
                            $("#buildyourform").append(tableWrapper);
                        });
                } else {
                    $("#field" + intId).slideUp(function () {
                        $(this).remove();
                    })
                }
                $("#buildyourform").show();
            });
            fType.unbind("click", function () {
                $(this).parent().remove()
            });
            fName.append(fType);
            fieldWrapper.append(fName);
        });
        $("#avail_images").append(fieldWrapper);
    } else {
        $("#avail_images").html("<h2>There are currently no images associated with this Category.</h2>");
    }
$.get('get_thumbs.php?category=')+选中,
功能(数据){
$.get('get_selected_photos.php?product_id='+product,
函数(返回){
po=$.parseJSON(返回);
});
var d=$.parseJSON(数据);
如果(d!=null){
var fieldWrapper=$(“
    ”); $.each(d,函数(索引,值){ var勾选=”; var fName=$(“
  • ”); 变量fType=$(''{ 键入:“复选框”, id:“复选框”+值[“照片id”], 值:值[“照片id”], 选中:($.inArray(值[“photo_id”],po)>0?真:假) }); fType.click(函数(){ var intId=$(this.val(); 如果($(this).is(':checked')){ var sel=$(this.val(); $.get('get_size.php?photo_id='+sel, 功能(数据){ var d=$.parseJSON(数据); var tableWrapper=$(“”); var-tName=d; tableWrapper.append(tName); $(“#buildyourform”).append(tableWrapper); }); }否则{ $(“#字段”+intId).slideUp(函数(){ $(this.remove(); }) } $(“#buildyourform”).show(); }); fType.unbind(“单击”),函数(){ $(this.parent().remove()) }); fName.append(fType); fieldWrapper.append(fName); }); $(“#可用图像”).append(fieldWrapper); }否则{ $(“#avail_images”).html(“当前没有与此类别关联的图像”); }
问题是,
($.inArray(value[“photo_id]”,po)>0?true:false)
似乎工作不正常。变量“po”是通过AJAX调用填充的,因此可能我遗漏了一些内容


非常感谢您的建议。

我建议您在代码中加入下划线.js,它将大大改进,使您的生活更加轻松。它非常易于阅读,具有跨浏览器支持

真是冗长

_.isArray(someVariable); // boolean return
它还提供了许多操作数据的功能。 示例:

_.isEmpty([]); // validates empty string, empty arrays, and empty objects {}
_.last([1, 2, 3, 4, 39]); // returns the last item on array
看一看


欢呼声

$。inArray(值[“photo_id”],po)!=-1
?“
po
的可能重复项在第二个请求的回调中获取数据,但您尝试在第一个请求的回调中读取数据。此外,
0
值意味着该项是列表中的第一项。您可能需要
$。inArray(值[“photo_id”],po)>-1
$.inArray(值[“photo_id”],po)>=0
使用
xs.forEach(f);
代替
$.each(xs,f);
xs.indexOf(x)
代替
$.inArray(xs,x)