Публикация строки JSON на страницу PHP

Хорошо, у меня есть некоторые суицидальные проблемы, отправляющие строку JSON на страницу PHP. Я буквально попал в десятку лучших результатов в Google и много вопросов SO, связанных с моей проблемой, но по-прежнему не могу понять, что я делаю неправильно.

У меня есть несколько форм на странице и вы хотите собрать все поля формы, превратить их в строку JSON и отправить их на страницу PHP, где сценарий выполняет итерацию каждого элемента и обновляет соответствующие таблицы базы данных.

Это мой сценарий jQuery / JS для сбора данных из всех форм:

var photo_annotations = {};

$('form').each(function(i) { var id = $(this).attr('id'); photo_annotations[id] = { caption: $('#'+id+'_caption').val(), keywords: $('#'+id+'_keywords').val(), credit: $('#'+id+'_credit').val(), credit_url: $('#'+id+'_credit_url').val() }; }); 

Если я console.log мой объект photo_annotations, это то, что производится на основе двух форм:

({11: {caption: «Надпись для первой фотографии», ключевые слова: «Ключевое слово1, ключевое слово2, ключевое слово3», кредит: «Joe Bloggs», credit_url: «www.a-domain.com»}, 12: {caption: «Подпись для Lady Gaga», ключевые слова: «Keyword3, Keyword4», кредит: «John Doe», credit_url: «www.another-domain.com»}})

Затем мне нужно отправить POST это как строку / JSON на страницу PHP, поэтому я сделал это:

 $.ajax({ type: 'POST', dataType: 'html', url: 'ajax/save-annotations.php', data: { data: JSON.stringify(photo_annotations) }, contentType: "application/json; charset=utf-8", success: function(data) { if (data) { $('#form_results').html(data); } else { alert("No data"); } } }); 

И на моей странице PHP у меня есть это:

 <?php //print_r($_POST['data']); $decoded = json_decode($_POST['data'],true); print_r($decoded); ?> 

Теперь это не единственное, что я пробовал. Я попытался удалить все настройки JSON из сценария AJAX, чтобы просто отправить чистую строку. Я попытался удалить contentType и JSON.stringify, но все равно не поеду. Моя страница PHP просто не может получить данные, которые я отправляю.

Пожалуйста, помогите мне в правильном направлении. Я дошел до того, что не могу вспомнить все варианты, которые я пробовал, и этот маленький скрипт теперь на второй день!

МЕНЕДЖЕР ДЛЯ ИСПОЛЬЗОВАНИЯ

Я переписал мою функцию AJAX, и она сработала. Я понятия не имею, что происходит не так, но решил протестировать мою функцию AJAX с помощью очень простой строки данных test=hello world и обнаружил, что никакие POST-данные не могут быть прочитаны с PHP-страницы, хотя Firebug говорит, что страница действительно получила после отправки данных, которые я отправил. Очень странно. Во всяком случае, это переработанный сценарий AJAX:

 var the_obj = JSON.stringify(photo_annotations); var post_data = "annotations="+the_obj; $.ajax({ url: 'ajax/save-annotations', type: 'POST', data: post_data, dataType: 'html', success: function(data) { $('#form_results').html(data); } });