2015-08-28 6 views
1

Я пытаюсь передать json-файл на PHP с помощью JQuery. когда я проверяю ответ, я получаю ошибку. json_decode ожидает, что параметр 1 будет строкой.сообщение json file to PHP

Вот мой JQuery рутина

$("#ProcessData").click(function(){ 
var cols = $("#tblGroup thead tr th").map(function(){ 
return $(this).text(); }); 

var headers = cols; 

// Fetch the data from the table body 
var tableObject = $("#tblGroup tbody tr.tableClass").map(function(i){ 
var row = {}; $(this).find('td').each(function(i){ 
var rowName = headers[i]; 
row[rowName] = $(this).text(); 
}); 

return row; 

}).get(); 

// convert object to JSON 
JSON.stringify(tableObject); 

//now call ajax to pass info to php 

$.ajax({ 
url: 'php/ProcessOrder.php', 
data: {my_json_data: tableObject}, 
type: 'POST', 
async: false, 
dataType: 'json', cache:false 
}); 
}); 

вот мой PHP скрипт

<?PHP 
//this is the layout of the json object 
//Title:First Name:Surname:Group Name this will needamending as the json object builds 

require("dbsettings.php"); 
$_Reference= $_POST["my_json_data"]; //this is a json object 
// Loop through Array 
$someArray = json_decode($_Reference, true); // Replace ... with your PHP Array 

foreach ($someArray as $key => $value) { 
echo $value["Title"] . ", " . $value["First Name"] . ", " . $value["Surname"] . ", " . $value["Group Name"] . "<br>"; 
} 

?> 

вот мой JSON объект

{"Title":"Mr","First Name":"12","Surname":"12","Group Name":"as"} 

Использование PHP скрипку Я создал и проверил этот скрипт, который отлично работает

<?php 

$someJSON = '[{"name":"Jonathan Suh","gender":"male"},{"name":"William Philbin","gender":"male"},{"name":"Allison McKinnery","gender":"female"}]'; 


// Loop through Array 
$someArray = json_decode($someJSON, true); // Replace ... with your PHP Array 

foreach ($someArray as $key => $value) { 
echo $value["name"] . ", " . $value["gender"] . "<br>"; 
} 

?> 

Одна вещь, которую я заметил, это мой php fidle json file имеет [] опубликованный объект, это не то, что относится к сообщению об ошибке? Или должен ли я не JSON.stringfy() и просто передать его как строку в php и использовать JSON_encode?

спасибо за любую помощь

+0

Дамп переменной и посмотрите, что вы получаете. 'Var_dump ($ _ POST [ 'my_json_data']);' –

+0

Он содержит HTML, а 'Title' = > строка 'Mr' (длина = 2) 'Имя' = > строка<Цвет шрифта = '# cc0000'><цвет шрифта = '# 888a85'> '12' (длина = 2) «Фамилия ' = > строка' 12 ' (length = 2) 'Название группы' <цвет шрифта = '# 888a85'> = > строка<цвет шрифта = '# cc0000'> 'как' (длина = 2) user2247671

ответ

0

JSON.stringify возвращает закодированную строку. Вы должны отправить его возвращаемое значение, а не переданный ему параметр.

// convert object to JSON 
json = JSON.stringify(tableObject); 

//now call ajax to pass info to php 

$.ajax({ 
url: 'php/ProcessOrder.php', 
data: {my_json_data: json}, 
type: 'POST', 
async: false, 
dataType: 'json', cache:false 
}); 
}); 
+0

Brillant спасибо вам обоим. – user2247671