我错过了什么?AJAX javascript JSON数组解析到php
我试图将一组已经加载的图像传递到一个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{..}试试这个我错过了什么?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输出图
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();
});