2013-05-18 6 views
0

J'ai le code ci-dessous en cours d'exécution pour envoyer des données comme un objet JSONdonnées jQuery AJAX JSON ne pas envoyer

var jdata = JSON.stringify(grid.serialize()); 
$.ajax({ 
    'type': 'POST', 
    'url': 'print.php', 
    'data': jdata, //assuming you have the JSON library linked. 
    'contentType': "application/json", 
    'success': function (data) { 
     alert(data); 
    }, 
    'error': function (x, y, z) { 
     alert(x.responseText); 
     // x.responseText should have what's wrong 
    } 
}); 
alert(JSON.stringify(grid.serialize())); 

CurrentY l'alerte après l'impression de la fonction ajax

[{ "id": » 1 "," col ":" 1 "," row ":" 1 "," size_y ":" 1 "," size_x ":" 1 "}, {" id ":" 2 "," col ":" 2" , "ligne": "1", "size_y": "1", "size_x": "1"}]

Sur la page d'accueil J'utilise <?php print_r($_POST) ?> pour voir ce que la page est envoyé et il continue à émettre

Array 
(
) 

Je dois manquer quelque chose de simple mais ont été incapables de comprendre quoi. Peut-être qu'un nouvel ensemble d'yeux verra une simple erreur que j'ai faite.

+0

Juste une petite estimation ... Je pense que vous devez écrire un message en minuscules. Sinon ... avez-vous essayé avec '$ .post'? – migg

+0

Etes-vous en train de poster '[" "" "" "" "," col ":" 1 "," row ":" 1 "," size_y ":" 1 "," size_x ":" 1 "}, {" id ":" 2 "," col ":" 2 "," row ":" 1 "," size_y ":" 1 "," size_x ":" 1 "}]' tel quel? –

+1

cela n'a pas d'importance si vous postez en majuscules. –

Répondre

2

Je pense que $_POST est seulement rempli si vous envoyez les données codées comme x-www-form-urlencoded. Donc, juste assigner la chaîne JSON à une touche (jQuery prend soin de coder correctement):

'data': {data: jdata} 

et enlever la partie 'contentType': "application/json".

Ensuite, vous obtenez les données en PHP avec:

$data = json_decode($_POST['data'], true); 

Alternativement, obtenir le corps brut de la demande en PHP et le traiter: How to retrieve Request Payload

+0

J'ai essayé cette méthode et elle passe le tableau json mais backsashes une des guillemets – Somk

+0

Ensuite, vous devriez probablement désactiver les guillemets magiques: http://stackoverflow.com/questions/6642901/php-5-3-automatically-escapes-get -post-from-form-cordes –

0

Si vous envoyez JSON à la serveur, sur le back-end saisir votre JSON en utilisant:

json_decode(file_get_contents('php://input')); 

Il ne sera pas dans le $ _PO ST super global.