使用json在php中获取json数组的问题

我试图传递并返回一个数组和PHP脚本,我已经测试了json_ecode部分和它的工作,但我无法获得PHP方面的json_decode。

使用Javascript

    scid_list = []; 
    $('.filter_on').each(function(){scid_list.push($(this).data("scid"));});
    $.ajax({
       type: "POST",
       dataType: "json",
       data: {scid_list:scid_list},
       url: "/scripts/products_filter.php",
       success: function(data){
                alert(data.join('n'));
       }
    });

PHP

<?php
     $scid_list=(json_decode($_POST['scid_list'], true));
     echo json_encode($scid_list);
     exit();
?>

我也尝试在解码时忽略真实

$scid_list=(json_decode($_POST['scid_list']);

而根本不解码

$scid_list=$_POST['scid_list'];

我不确定我错过了什么。 我试着玩串行数据,但阅读我没有必要,如果你指定dataType为json,我试着使用stripslashes

任何帮助表示赞赏!

干杯


我认为问题在于你发送的数据不是json,即使你在Ajax调用中指定它。 由于它只是一个二维数组,你为什么不在你的JS之前使用Array.join:

var scids = scid_list.join(','); 

这将把它变成逗号分隔的字符串。 例如

"id1,id2..."

您也可以简化Ajax调用:

$.post('/scripts/products_filter.php', {scids: scids}, function(data) {
    // process data response here
});

然后在您的PHP文件中,您可以使用explode()将其重新转换为数组:

$ids = explode(",",$_POST["scids"]);
foreach ($ids as $id) { 
    // Do something with the array of ids.    
};

希望一切都有意义。


您的dataType参数指定您希望得到JSON数据作为响应,但这并不意味着您将数据作为JSON发送。 在你的情况下,你发送一个数组,因此在PHP中,而不是:

$scid_list=(json_decode($_POST['scid_list'], true)); /* WRONG */

你应该简单地使用:

$scid_list=$_POST['scid_list'];

dataType(默认值:智能猜测(xml,json,script或html))

类型:字符串您期望从服务器返回的数据类型。

总而言之,对于给定的HTML:

<form action="work.php" method="post">
    <p><input class="filter_on" data-scid="22" type="checkbox" /> Filter 22</p>
    <p><input class="filter_on" data-scid="28" type="checkbox" /> Filter 28</p>
    <p><input class="filter_on" data-scid="31" type="checkbox" /> Filter 31</p>
    <p><input type="submit" value="Send" /></p>
</form>

和脚本:

$(document).on('ready', function() {
    $('form').on('submit', function(e) {
        e.preventDefault();
        scid_list = []; 
        $('.filter_on:checked').each(function(i){
            scid_list.push( $(this).data("scid") );
        });
        $.ajax({
            type: "POST",
            dataType: "json",
            data: {scid_list:scid_list},
            url: "work.php",
            success: function(data){
                alert(data.join('n'));
            }
        });
    });
});

PHP部分是:

$scid_list=$_POST['scid_list'];
echo json_encode($scid_list);
exit();
链接地址: http://www.djcxy.com/p/57675.html

上一篇: Problems getting json array in php using json

下一篇: Removing a nested array out of a array and assigning to a new variable in php