2009-10-07 8 views
1
problème
$.fn.fieldValues = function(successful) 
{ 
    var values = {}; 
    this.each(function() 
    { 
     if(strstr(this.name, '[]', true)) 
     { 
      var tmp = this.name.replace(/\[\]/, ''); 
      if(typeof values[tmp] == 'undefined') values[tmp] = {}; 
      var x = 0; 
      while(typeof values[tmp][x] != 'undefined') x++; 
      values[tmp][x] = $(this).val(); 
     } 
     else values[this.name] = $(this).val(); 
    }); 
    return values; 
} 

est que je reçois ce tableau sur le côté php:JavaScript/JQuery tableau/problème objet

array(['tagCloud'] => '[object Object]', ['status'] => 'Active'.....) 

Pourquoi est-TagCloud un objet, comment puis-je publier un tableau associatif tout à php?

Répondre

1

On dirait que vous avez besoin SerializeArray à la place, qui fonctionne comme sérialisation mais fera un tableau d'objets nom/valeur.

Vous devez ensuite transformer ceci en une chaîne JSON et passer à votre processus PHP. Le php peut alors le désérialiser dans un tableau d'objets nom/valeur et vous pouvez utiliser les données comme vous le souhaitez.

//build json object 
var dataArray = $.makeArray($("form").serializeArray()); 

puis passer à travers un message:

// make ajax call to perform rounding 
$.ajax({ 
    url: "/Rounding.aspx/Round/12", 
    type: 'POST', 
    dataType: 'html', 
    data: $.toJSON(dataArray), <-- call to jQuery plug in 
    contentType: 'application/json; charset=utf-8', 
    success: doSubmitSuccess 
}); 

Voici un link à la bibliothèque JSON-je utiliser pour sérialiser les données

1

Le coderait-il en tant qu'objet json et le décoderait ensuite en php (json_decode)?

+0

Oui, je pense que ce serait, mais JQuery natif hasn » t-on json natif, et chaque plugin que j'ai utilisé est nul, quelqu'un connait-il un bon plugin pour que ça marche? – dfilkovi

+0

Vous voulez dire que PHP n'a pas JSON natif? –

+0

Non, mais j'ai trouvé une solution, le problème était que lors de l'utilisation de toJson dans JQuery j'ai eu l'objet de stdClass, j'ai besoin de convertir cela en tableau sur le côté php et ce sera OK. – dfilkovi

0

Il ressemble comme si vous réinventiez jQuery.fn.serialize. gère jQuery entrées avec "[]" au nom déjà:

<form> 
    <input type="hidden" name="foo[]" value="1" /> 
    <input type="hidden" name="foo[]" value="2" /> 
    <input type="hidden" name="foo[]" value="3" /> 
</form> 

<script> 
alert(unescape($('form').serialize())) // "foo[]=1&foo[]=2&foo[]=3" 
</script> 

php analysera que dans un OOTB tableau.

+0

Oui, mais serialize renvoie la chaîne, et j'ai besoin de tableau parce que je vais le gérer diferent avec ma fonction ajax personnalisée – dfilkovi

+0

@dfilkovi: définir "gérer le diferent" s'il vous plaît. –

+0

Eh bien d'abord, je récupère toutes les données d'un formulaire, puis je mets les autres variables nécessaires dans ce tableau, comme la fonction php à appeler (mettre à jour, supprimer), puis passer ce tableau entier à ajax. En utilisant serialize, je devrais ajouter toutes les autres variables à cette chaîne, mais que faire quand je n'utilise pas serialize() mais simple val() et que je ne veux passer qu'une seule variable. Je devrais vérifier Si l'une des variables passées sont des chaînes sérialisées, puis mettre à jour la chaîne avec d'autres variables, me semble être une surpuissance. – dfilkovi