2013-05-03 2 views
4

Я знаю, что звонки ajax и $ _POST были вокруг много в последнее время, тем не менее я не мог найти ответ на свою текущую проблему.

В моей Javascript, у меня есть двумерный массив данных:

var postData = new Array(new Array()); 
postData[0]['type'] = 'grid'; 
postData[0]['data'] = gridData; 

тогда, когда я пытаюсь отправить этот массив в PHP скрипт:

function export_report_pdf(postData){ 
    console.log(postData); 

    $.post('/ajax/ExportReportPDF.ajax.php',{data: JSON.stringify(postData)}, 
    function(postData){ 
     console.log("Successfully requested report export."); 
    }); 

} 

Я попытался получить массив в моем PHP-скрипте: print_r ($ _ POST); var_dump (json_decode (file_get_contents ("php: // input")));

но все, что я получаю в моем $ _POST, является пустым двумерным массивом. Когда я запускаю console.log (postData) в начале моей функции, данные есть.

Я также проверил $ ​​_REQUEST и попытался удалить JSON.stringify.

ответ

5

Ваш внутренний тип переменной должен быть объект вместо массива, в противном случае он не будет сериализовать правильно:

var postData = []; 

postData.push({ 
    type: 'grid', 
    data: gridData 
}); 
+1

Это сделало трюк. Большое спасибо! – t70

-1
function export_report_pdf(postData){ 
console.log(postData); 

$.ajax(url:'/ajax/ExportReportPDF.ajax.php',type:'POST',{data: JSON.stringify(postData)}, 
success:function(postData){ 
    console.log("Successfully requested report export."); 
}); 

} 

попробуйте это. и убедитесь, что у вас есть последний jquery.

+0

$ .ajax, как ну просто дает мне пустой массив. Версия jquery - 1.9.1. – t70

0

Вы пробовали использовать вместо должности. попробуйте сделать это, чтобы гарантировать, что данные передаются от клиента к серверу, а проблема связана только с запросом POST.

Также, если вы попробуете GET, чем проверьте консоль, если вы получаете какую-либо ошибку.

+0

Итак, я попробовал GET и получаю точно такое же поведение ... – t70

+0

У вас возникли ошибки в консоли вашего браузера. –

0

Не указывайте JSON.stringify данные вашего сообщения. jQuery сделает это за вас, независимо от того, сделал ли вы это самостоятельно, поэтому он заканчивается двойным кодированием. Если вы проверите свои журналы, вы увидите, что после unencoding данных PHP имеет один параметр POST, который содержит все ваши данные, закодированные JSON.

Вы могли бы должны выглядеть следующим образом:

$.post('/ajax/ExportReportPDF.ajax.php', {data: postData}, ... 
+0

Как я уже писал, я пробовал это без подкрепления, но это не меняло результата. – t70