Javascript 试图显示存储为JSON数组和PHP的图像名称
我正在创建一个后期创建页面,在表单中,我将图像名称存储在隐藏的表单输入中,然后将它们放在javascript中,通过ajax请求进一步将它们发送到处理信息并将其存储到数据库的PHP页面。问题是,当我尝试循环数组时,我只得到一个“a”或单词“Array”. 这是我的密码: 收集图像名称的Javascript:Javascript 试图显示存储为JSON数组和PHP的图像名称,javascript,php,json,ajax,Javascript,Php,Json,Ajax,我正在创建一个后期创建页面,在表单中,我将图像名称存储在隐藏的表单输入中,然后将它们放在javascript中,通过ajax请求进一步将它们发送到处理信息并将其存储到数据库的PHP页面。问题是,当我尝试循环数组时,我只得到一个“a”或单词“Array”. 这是我的密码: 收集图像名称的Javascript: var imageNames = []; images.find('span').each(function(){ var imagename = $(this).text();
var imageNames = [];
images.find('span').each(function(){
var imagename = $(this).text();
imageNames.push(imagename);
});
JSON.stringify(imageNames);
下面是我用来发送数据的ajax请求:
$.ajax({
method:"POST",
url:"php/publish.php",
data:{xsthumb:xsimg, sthumb:simg, medthumb:medimg, Lthumb:Limg, images:imageNames, text:pubContent, desc:shortDesc, desc2:shortDesc2, cat:cat, section:sec, title:ttl },
success:function(data){
alert('data incomming');
console.log(arguments);
alert(data);
window.location = '../';
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log(arguments);
alert(errorThrown);
}
})
ImageNames是一个变量,我假设它是数组,当我在javascript中警告它时,它会显示类似:“imagename.jpg,imagename.jpg”
以下是我的Php文件的外观:
//images
$gallery_images = $_POST['images'];
$gal_images = implode("," , $gallery_images);
$sql = "INSERT INTO posts(title, images, post, category, date_posted, visible, author_id, section) VALUES('$title', '$gal_images', '$article_text', '$category', '$today', '$visible', 'Moncho', '$section')";
$qry = mysqli_query($con, $sql) or die(printf(mysqli_errno($con)));
因此,当我转到动态帖子页面并尝试提取图像时,我会这样做:
$id = $_GET['id'];
$result = mysqli_query($con, "SELECT * FROM posts WHERE id= $id ");
while($row = mysqli_fetch_array($result)){
$title = $row['title'];
$images = $row['images'];
$text = $row['post'];
$date = $row['date_posted'];
$author = $row['author_id'];
$section = $row['section'];
};
json_decode($images);
for($i=0; $i < count($images); $i++){
//echo '<a href="#" class="post-thumb">';
//echo '<img src="images/post-img/'. $imgs;
//echo '" alt="'.$title.'">';
//echo '</a>';
echo $images[$i];
}
$id=$\u GET['id'];
$result=mysqli_query($con,“从id=$id的帖子中选择*);
while($row=mysqli\u fetch\u数组($result)){
$title=$row['title'];
$images=$row['images'];
$text=$row['post'];
$date=$row['date_posted'];
$author=$row['author_id'];
$section=$row['section'];
};
json_解码($images);
对于($i=0;$i
我不确定我遗漏了什么,我假设问题出在ajax和PHP之间,但那只是我…错误地使用json\u解码
$myImagesFromJson = json_decode($images, true);
foreach($myImagesFromJson as $image){
echo $image;
}
当你插入它时,你只是在内爆
$gal_images = implode("," , $gallery_images);
所以当你取回它的时候,你只需要把它炸开
$images = explode(",",$row['images']);
foreach($images as $ima){
echo $ima;
}
您不必在那里使用json_decode…因为它不是真正的json数据,它只是逗号分隔的列表
json_decode($images);
试着替换
json_decode($images);
与
探索问题:您正在将数据库中的数据保存为一个由逗号分隔的路径字符串。当你读到它的时候,
它不是json文本!您可以使用explode函数将第一个参数作为逗号在数组中进行转换,因此$images变量现在将成为一个数组,其中每个元素都是图像的路径。警告您的代码极易受到sql注入攻击!这就成功了,我的混音方法非常简单,谢谢你的澄清,我快疯了!
$images = explode(',' , $images);