我错过了什么?AJAX javascript JSON数组解析到php

我错过了什么?AJAX javascript JSON数组解析到php,javascript,php,jquery,arrays,json,Javascript,Php,Jquery,Arrays,Json,我试图将一组已经加载的图像传递到一个php文件,然后访问一个数据库,以加载更多已经加载的图像所特有的图像。javascript传递一个图像源数组,php文件执行一个查询以选择所有不在传递数组中的图像(限制为12个)。php然后将图像作为JSON对象传回,这样我就可以使用JS适当地处理它们 总结 获取加载图像的源并放入JSON数组 将JSON数组传递到php文件 执行mysql查询以获取更多图像 pHp将图像放入一个新的图像数组中 将新图像数组传递给javascript Javascript输出图

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

总结

获取加载图像的源并放入JSON数组 将JSON数组传递到php文件 执行mysql查询以获取更多图像 pHp将图像放入一个新的图像数组中 将新图像数组传递给javascript Javascript输出图像。 javascript没有加载图像,也没有返回php数字文件中的测试数组。为什么它不起作用

JAVASCIRPT

PHP

文件目录

..\Gallery\index.php ..\Gallery\getimages.php ..\Gallery\js\ajaxStuff.js 尝试添加async:false,以便ajax在图像加载后开始;通话结束

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

试试这个

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();
            });

你的问题是什么?您是否收到任何错误?成功块中的alertimages以及您在成功块中解析json的位置检查firebug错误控制台,看看是否收到任何错误。我尝试过,这似乎很奇怪,因为当我单击按钮实际调用事件时,控制台不会记录加载图像。这让我相信我有一个打字错误什么的。好吧,我修正了这个错误,但仍然不起作用。加载图像正在控制台中显示。Never do async:false,Never。您能解释一下原因吗?如果这样做,您会阻止主UI线程,使应用程序无响应[与异步JavaScript和XML的全部目的背道而驰。我的意思是,即使这是一个问题,也不会破坏我在上面测试的示例。php文件正在创建一个数字为1-10的虚拟数组。然后,php文件应该将数组传递回JavaScript,在我的控制台中,我应该会看到1…10列出。但我所有的ee正在加载图像。所以成功是失败的。这就是我的问题所在。我遗漏了什么?我已经遵循了教程和所有内容,但仍然无法理解。@user3012749使用浏览器的DevTool:检查您是否有JS错误[在控制台中]或HTTP错误[在网络选项卡中],不是一个就是另一个。我刚刚尝试了您的示例。我所做的只是在jquery document ready中调用loadImages函数。这有什么原因吗?问题出在URL上。正在为我执行成功回调。console.logimages+images[I].num;之前无法工作的原因是bcos在加载图像之前执行了JS函数。因此,我们在jquery document ready中调用了该函数
 <?php
$myArray = $_REQUEST['imagesArray'];

$images = array();

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

echo json_encode($images);
?>
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();
            });