Javascript 试图显示存储为JSON数组和PHP的图像名称

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

我正在创建一个后期创建页面,在表单中,我将图像名称存储在隐藏的表单输入中,然后将它们放在javascript中,通过ajax请求进一步将它们发送到处理信息并将其存储到数据库的PHP页面。问题是,当我尝试循环数组时,我只得到一个“a”或单词“Array”. 这是我的密码:

收集图像名称的Javascript:

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