2013-12-20 4 views
1

Я новичок в передаче объектов через AJAX, и поскольку я не уверен в передаче и извлечении, у меня возникла проблема с отладкой.Передача данных JSON и получение их обратно

В основном, я делаю запрос AJAX контроллеру PHP и эхо-данные на странице. Я не могу быть уверен, что успешно передаю свой объект. При печати на просмотр страницы я получаю null.

Это мой ЯШ:

// creating a js filters object with sub arrays for each kind 
var filters = {}; 

// specify arrays within the object to hold the the list of elements that need filtering 
// names match the input name of the checkbox group the element belongs to 
filters['countries'] = ["mexico", "usa", "nigeria"]; 
filters['stations'] = ["station1", "station2"]; 
filters['subjects'] = ["math", "science"]; 

// when a checkbox is clicked 
$("input[type=checkbox]").click(function() {   

    // send my object to server 
    $.ajax({ 
     type: 'POST', 
     url: '/results/search_filter', 
     success: function(response) { 
      // inject the results 
      $('#search_results').html(response); 
     }, 
     data: JSON.stringify({filters: filters}) 
    }); // end ajax setup 

}); 

Мой контроллер PHP:

public function search_filter() { 

    // create an instance of the view 
    $filtered_results = View::instance('v_results_search_filter');  

    $filtered_results->filters = $_POST['filters']; 

    echo $filtered_results; 

} 

мой взгляд PHP:

<?php var_dump($filters);?> 

Возможно, мне нужно использовать функцию jsondecode PHP, но я Я не уверен, что мой объект попадает в первую очередь.

ответ

3

IIRC атрибут данных в $ .ajax метод JQuery принимает данные JSON непосредственно, нет необходимости использовать JSON.stringify здесь:

data: {filters: filters} 

Таким образом, вы получаете ваши данные в формате JSON, как обычный ключ/как и следовало ожидать, для пары, подходящей для чтения в PHP через суперглобальный массив $ _POST.

+0

все еще получаю NULL, любой другой предложения? – compguy24

+0

AFAICT ваш js-код и ajax-запросы в порядке, что-то должно быть неправильным в вашем php-коде, и у меня его недостаточно, чтобы воспроизвести проблему. – Calimero

+0

В div #search_results я получаю «NULL», где ожидаю распечатку объекта, который я пытаюсь передать. – compguy24

2

http://blog.teamtreehouse.com/beginners-guide-to-ajax-development-with-php

При использовании Ajax страница не перезагружается, поэтому переменная PHP не использования.

Возможно, вы захотите найти учебное пособие. Я положил одну в начале, как я не вижу, как отформатировать это на моем планшете

вам нужно будет json_encode вашего ответа, как руководство показывает

вы можете распечатать в журнал на сервере при вы в функции PHP и сделать его мир читаемым, так что вы можете получить доступ к нему через браузер

Мне нравится использовать инструменты разработчика в Chrome, чтобы увидеть, что на самом деле вернулся с сервера

Смежные вопросы