2009-12-03 3 views
0

J'ai la pièce de code suivante jQuery:

function saveSchedule() 
{ 
    var events = []; 

     $('ul#schedule-list').children().each(function() { 
      events.push($(this).attr('value')); 
     }); 

     jQuery.each(events, function() 
     { 
      alert(this); 
     }); 


     $.post("schedule_service.php?action=save_schedule", 
     { events: events, studentid: $('#student').val() }, 
     function(data) { 
      alert(data); 
     }, 'json'); 
    } 

qui obtient toutes les « valeurs » d'une liste sur ma page, et les met dans le tableau des événements. Puis, ci-dessous je passe dans ce tableau plus un studentid dans la section de données de mon appel $ .post.

Cependant, quand je reçois ce tableau de mon côté PHP, il semble être une valeur singulière:

<?php 

    include_once('JSON.php'); 
    $json = new Services_JSON(); 


    if ($_GET['action'] == 'save_schedule') 
    { 
     $event_list = $_POST['events']; 

     echo $json->encode($event_list); 
     exit; 
    } 
?> 

(Note: J'utilise une ancienne version de PHP, d'où la bibliothèque json.php Maintenant, tout cela retourne toujours "14", qui est le dernier événement dans le tableau d'événements.

Poste:
alt text

Réponse:
alt text

Comment vais-je passer la manipulation du tableau dans mon .post de $ tort?

Répondre

0

Vous pouvez transmettre les éléments du tableau sous la forme d'une chaîne comprenant tous les éléments concaténés par un caractère. Ensuite, vous pouvez diviser le tableau dans votre code php et en extraire les valeurs.

Utilisez join() pour joindre les éléments d'un tableau.

joindre (séparateur);

séparateur :

spécifie une chaîne pour séparer chaque élément de la matrice. Le séparateur est converti en une chaîne si nécessaire. Si est omis, les éléments du tableau sont séparés par une virgule.

Utilisez explode() sur le côté PHP pour tourner le ** join() ** string ed ensemble.

0

Pourquoi ne pas utiliser JSON? Passez le tableau JavaScript en tant qu'objet JSON et analysez-le en PHP.

8

Il peut sembler idiot, mais essayez ceci:

$.post("schedule_service.php?action=save_schedule", 
     { 'events[]': events, studentid: $('#student').val() }, 
     function(data) { 
      alert(data); 
     }, 'json'); 

PHP analysera le nom de clé events[] dans un tableau réel à l'intérieur php automatiquement ...

+0

Wow, ça a marché. Je ne m'attendais pas à ça. Merci gnarf. – Mithrax

+0

Bonne réponse @gnarf.Si je n'avais pas testé d'abord, je vous aurais battu à la réponse;) +1 –

+0

@dcneiner - J'étais sûr à 99% que ça marcherait, puisque c'est ce que vous utilisez pour les trucs '