JSON декодирование в PHP - PullRequest
       4

JSON декодирование в PHP

1 голос
/ 28 октября 2010

Я пытаюсь декодировать JSON в php, который я отправил, используя вызов ajax в javascript (jquery).

Код 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-код:

$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 ]

2 голосов
/ 28 октября 2010

Почему вы пытаетесь использовать там json_decode? У вас уже есть данные в виде массива в $ _POST. Вот почему json_decode завершается ошибкой и возвращает NULL ... он ожидает правильно отформатированную строку и вы передаете ей массив. Если параметр dataType: "json" смущает вас, он указывает тип данных, которые вы ожидаете от сервера, а не тип данных, которые вы отправляете. Вы просто должны обработать данные из $ _POST, создать свой ответ, применить к нему json_encode и повторить полученную строку.

1 голос
/ 28 октября 2010

намного лучше, если вы будете использовать это. при извлечении данных из базы данных

$.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 (значения массива);

1 голос
/ 28 октября 2010

json_decode($clean['artists']); дает вам объект, поэтому повторение этого ничего не показывает.Попробуйте print_r(), чтобы увидеть, что находится внутри объекта:

// Will show you the whole PHP object
print_r( json_decode( $clean['artists'] ) ); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...