web-dev-qa-db-fra.com

Analyse de chaîne php en jquery

J'envoie un tableau php en utilisant serialise mais la réponse est différente. Voici ma tentative

$array = serialize($out);
var_dump(serialize($array));
//string(58) "s:50:"a:2:{s:9:"sidebar-1";i:5;s:12:"footer-insta";i:2;}";"

La façon dont j'envoie cette valeur,

echo '<div data-ad = '.$array.' class="ash_loadmore"><span>LOAD MORE</span></div>';

Comme j'envoie la valeur sérialisée en utilisant ajax, la valeur que me donne la réponse ajax,

string(54) "a:2:{s:9:\"sidebar-1\";i:5;s:12:\"footer-insta\";i:2;}"

J'ai besoin de la valeur exacte car j'ai à nouveau désérialiser pour en faire un tableau. Pourquoi il y a \ supplémentaire et la sortie est différente.

1
Sadia Mehjabin

Eh bien, il semble que @JacobPeattie ait mentionné l’utilisation de json, je ne fais que le répéter.

  1. Premier json encoder la variable $array = json_encode($out);

  2. Puis envoyez cette valeur echo '<div data-ad = '.$array.' class="ash_loadmore"><span>LOAD MORE</span></div>';

  3. Pour obtenir cette echo json_encode($_POST['ad'])

Je pense que c'est ça.BTW vous n'avez pas maintenant ce problème de chaîne car la sortie sera comme ceci {"footer-insta":2,"sidebar-1":3} vous voyez qu'il est enveloppé par {}

2
ashraf

Eh bien, ce \ est ajouté pour échapper au ". Par exemple, vous stockez la chaîne entière "sidebar-1". Notez que la chaîne contient " ouvrant ainsi que " fermant. Maintenant, la chaîne est également entourée d'un autre "". Par conséquent, pour séparer les " d'ouverture et " de la chaîne stockée, il faut ajouter un \ pour l'échapper. De cette façon, le formulaire masqué analyse le "" de la chaîne stockée en tant que citation réelle.

0
CodeMascot

La solution la plus simple et la moins problématique:

$array = json_encode($out);
var_dump(array); // string "{\"sidebar-1\":5,\"footer-insta\":2}"

Dans JS, vous pouvez utiliser:

 JSON.parse ("{\" sidebar-1\": 5, \" footer-insta\": 2}") 

et vous avez objet avec des données

0
Arkadiusz Bartnik