2010-01-26 9 views
2

Je veux envoyer un tableau javascript à PHP en utilisant jquery ajax. Où le deuxième «liens» est un tableau javascript.javascript array to php

quand j'ai ce tableau:

'1' ... 
    '1' => "comment1" 
    '2' => "link1" 
    '3' => "link2" 
    '4' => "link3" 
'2' ... 
    '1' => "comment2" 
    '2' => "link4" 

puis en utilisant:

var jsonLinks = JSON.stringify(links); 
alert(jsonLinks); 

me donnera:

[null,[null,"comment1","link1","link2","link3"],[null,"comment2","link4"]] 

me semble que quelque chose ne va pas. quels sont les null: s et je ne peux pas utiliser json_decode du côté php pour obtenir les éléments.

quelle fonction devrais-je utiliser pour le convertir en json et comment puis-je y accéder du côté php?

essayé ce http://code.google.com/p/jquery-json/ mais il donnera exactement la même sortie que JSON.stringify() (ils disent aussi que dans la documentation).

ont lutté avec cela dans quelques heures maintenant ... apprécierait une aide spécifique.

Je veux juste envoyer un tableau de javascript php ... pourquoi est-ce si sacrément difficile:/

+0

Pourquoi avez-vous encore posé cette question? Vous avez déjà demandé http://stackoverflow.com/questions/2138812/ –

Répondre

2

Répondant à la null part, tableaux JavaScript sont numériques et à base zéro:

>>> var foo = []; 
>>> foo[5] = 'Five'; 
"Five" 
>>> foo 
[undefined, undefined, undefined, undefined, undefined, "Five"] 

Au contraire, PHP permet manquant (et mixte) clés:

<?php 

$foo = array(); 
$foo[5] = 'Five'; 
print_r($foo); 

?> 

Array 
(
    [5] => Five 
) 

Si vous voulez utiliser des tableaux, je vous suggère de les rendre basés sur zéro et empêchent les valeurs manquantes. Sinon, vous pourriez probablement utiliser des objets à la place.

+0

merci u !! Avec cette explication j'ai tout compris! – ajsie

2

Il y a un certain plugin jQuery qui peut coder pour JSON (et decode de JSON).


Par exemple, vous pouvez jeter un oeil à jquery-json(citant):

Ce plugin expose quatre nouvelles fonctions sur le $, ou objet jQuery:

  • toJSON : Sérialise un objet, un nombre, une chaîne ou un objet javascript dans JSON.
  • evalJSON: Convertit JSON en Javascript, rapidement, et est trivial.
  • secureEvalJSON: Transforme de JSON Javascript, mais le fait en vérifier si la source est en fait JSON, et pas avec d'autres déclarations Javascript jetés dans
  • quoteString:. Lieux entre guillemets une chaîne, et inteligently Échappe tout guillemet , barre oblique inverse ou contrôle caractères.
+0

qui me donne le même résultat que l'utilisation de JSON.stringify(). si ce n'est pas grave avec la sortie, comment puis-je accéder aux éléments? J'ai essayé avec l'alerte (jsonLinks [1] [1]) mais il a donné un indéfini. – ajsie

1

Je ne sais pas comment vous essayez de lire dans votre script PHP, mais si elle est liée à vous avoir des tableaux à base de 1 plutôt que des tableaux basés sur 0, puis en javascript, vous pouvez supprimer les valeurs nulles (élément zéro) avec:

var jsonLinks = JSON.stringify(links.slice(1)); 
+0

je n'obtiens pas le null: s ... ce qui sont ceux? Je n'ai jamais accès à des tableaux envoyés via javascript mais je suppose que c'est $ links = json_decode ($ _ POST ['links']), alors utilisez simplement $ links [1] [1] etc. mais ça ne marche pas. donc je suppose que quelque chose ne va pas parce que je reçois tous les NULLS? – ajsie

+0

Vous obtenez les valeurs nulles car vous commencez votre tableau à l'index "1". Les tableaux Javascript sont à base zéro, donc l'index 0 (liens [0], liens [1] [0] et liens [2] [0]) sera "nul" (non défini) – Graza