Json在PHP中解码

时间:2010-10-28 08:52:13

标签: php javascript jquery json

我正在尝试解析我在javascript(jquery)中使用ajax调用发送的php中的JSON。

javascript代码:

    var editSchedule_data = {
        'action'            : 'editSchedule',
        'eventid'           : $('#eventid').val(),
        'pixels_per_minute' :$('#pixels_per_minute').val(),
         artists: {
            artist: []
        }
    }

    $('.artist').each(function(index) {
        var id=$(this).attr('id');
        id=id.split('_');
        editSchedule_data.artists.artist.push({
            'artistid'    : id[0],
            'stageid'     : id[1],
            'left'        : $(this).offset().left-$('.artists').offset().left,
            'width'       : $(this).width()
        });
    });

    $.ajax({
        type :   "POST",
        url  :   "callback.php",
        data :   editSchedule_data,
        dataType :   "json",
        async    :   true,
        success   :   function(json)  {
            if(json.success)  {
                showSucces(json.message);

            }
            else{
                showError(json.message);
            }
        },
        error: function(error){
            alert("An error occurred: "+error.message);
        }
    });

php-code:

$clean = sanitize($_POST);

echo(json_encode($clean['artists']),
json_last_error());

echo(json_decode($clean['artists']),
json_last_error());

我的输出: 编码:

{"artist":[{"artistid":"4","stageid":"3","left":"360","width":"240"},{"artistid":"3","stageid":"4","left":"120","width":"240"},{"artistid":"1","stageid":"5","left":"120","width":"180"},{"artistid":"2","stageid":"5","left":"300","width":"120"},{"artistid":"5","stageid":"6","left":"480","width":"120"}]}
0

解码:

0

有人能告诉我如何使解码功能起作用吗?

3 个答案:

答案 0 :(得分:2)

你为什么要在那里使用json_decode?你已经在$ _POST中将数据作为数组。这就是为什么json_decode失败并返回NULL ...它期望一个正确格式化的字符串,你传递一个数组。 如果dataType:“json”参数让您感到困惑,它会指定您希望从服务器返回的数据类型,而不是您要发送的数据类型。 您只需处理来自$ _POST的数据,创建响应,在其上应用json_encode并回显结果字符串。

答案 1 :(得分:1)

json_decode($clean['artists']);正在给你一个对象,这就是为什么回显它没有显示任何东西。尝试print_r()查看对象内部的内容:

// Will show you the whole PHP object
print_r( json_decode( $clean['artists'] ) ); 

答案 2 :(得分:1)

如果你使用它会好得多。从数据库中提取数据时

$.getJSON("callback.php",function(json){
$('#div to update').html(json[0].databasefield); // 0 if query is only 1 result
});                                 // when there are many of them use for loop 
在你的php上你应该使用json_encode(数组值)编码它;