繁体   English   中英

我想念什么? AJAX JavaScript JSON数组解析为php

[英]What am I missing? AJAX javascript JSON array parse to php

我正在尝试将一组已加载的图像传递到php文件,然后访问数据库以加载更多已加载图像的唯一图像。 javascript传递图像来源的数组,php文件执行查询以选择限制在12个不在传递数组中的所有图像。 php然后将图像作为JSON对象传回,因此我可以使用JS适当地处理它们。

摘要

  1. 获取已加载图像的来源并放入JSON数组中
  2. 将JSON数组传递到php文件
  3. 执行mysql查询以获取更多图像
  4. pHp将图像放入新的图像数组中
  5. 将新的图像数组传递给javascript
  6. JavaScript输出图像。

javascript不会加载图像,也不会返回数字php文件中的测试数组。 为什么不起作用?

JAVASCIRPT

var imageArray = {};
imageArray.itemList = [];

function imagesLoaded(){
    var gal_img_thumbs = document.getElementsByClassName("gal-thumb-image");
    for (var i = 0; i < gal_img_thumbs.length ; i++){
        var img = gal_img_thumbs[i].firstChild.getAttribute("src");         
        var new_obj = {'src':img};
        imageArray.itemList.push( new_obj);

        //imageArray.itemList.[i]['src']=img;
    }
}

function loadImages(){
    console.log("load images");

    imagesLoaded();
    $.ajax({
        url: "getimages.php",
        dataType: "json",
        data: {
            imagesArray : imageArray.itemList
        },
        success: function(images){
            for(var i = 0; i < images.length ; i++){
                console.log("image" + images[i]);
            }
        }

    });

}

的PHP

 <?php
$myArray = $_REQUEST['imagesArray'];

$images = array();

for($i = 0; $i < 10; $i++){
    $image = array(
        "num" => $i
    );
    $images[] = $image;
}

echo json_encode($images);
?>

文件目录

  • .. \\ Gallery \\ index.php
  • .. \\ Gallery \\ getimages.php
  • .. \\ Gallery \\ js \\ ajaxStuff.js

尝试这个

var imageArray = {};
            imageArray.itemList = [];

            function imagesLoaded() {
                var gal_img_thumbs = document.getElementsByClassName("gal-thumb-image");
                for (var i = 0; i < gal_img_thumbs.length; i++) {
                    var img = gal_img_thumbs[i].firstChild.getAttribute("src");
                    var new_obj = {'src': img};
                    imageArray.itemList.push(new_obj);

                    //imageArray.itemList.[i]['src']=img;
                }
            }

            function loadImages() {
                console.log("load images");

                imagesLoaded();
                $.ajax({
                    url: "/test/test.php",
                    dataType: "json",
                    data: {
                        imagesArray: imageArray.itemList
                    },
                    success: function(images) {
                        for (var i = 0; i < images.length; i++) {
                            console.log("image" + images[i]);
                        }
                    }

                });
            }
            $(function(){
            loadImages();
            });

尝试添加async:false以便ajax在imagesLoaded()之后开始。 通话完成

编辑:您可以尝试的另一件事是使用beforeSend: function() {..}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM