Nasıl php ajax JSON yanıt içinde bir dize içinde çift tırnak koyabilirsiniz?

2 Cevap php

Ben sunucudan bir Ajax isteği bir JSON yanıt alırsınız. Çalışır Bu şekilde:

{"A": "1", "b": "merhaba 'pisi'"}

Ama çift tırnak koyarak başarılı olmadı kitty.

Ben dönüştürdüğünüzde JavaScript tarafından "Ajax yanıt x22 \ olarak, hala olarak yorumlanır" ve ben JSON ayrıştırmak olamaz.

Ben de (ki mümkün olacaktır) daha sonra \ ve Unescape kaçmak gerekir?

Bunun nasıl?

Edit: Ben de bunu ifade emin değilim: Ben "b" after ayrıştırma içinde bu dize istiyorum:

merhaba "pisi"

Gerekirse ben de "b" dönüştürmek için ayrıştırma sonra ek bir adım eklemek olabilir, ama gerekli değil sanırım, yani bu otomatik olarak gerçekleşir daha zarif bir yolu var mı?

Edit2: ajax sayfa php tarafından oluşturulur. Ben sayfada JSON ayrıştırma hatası, tüm sonuç b değer yaratmak için şimdi birkaç şey denedim:

  $b = 'merhaba "pisi"';      

  // no 1:
  //$b = str_replace('"',"\x22",$b);

  // or no 2:
  // $b = addslashes($b);  

  // or no 3: 
  $b = str_replace('"','\"',$b);

  echo '{ "a" : "1", "b" : "' . $b . '"}';

Edit3: Bu çözüm son olarak çalışır:

$b = 'merhaba "pisi"';      
$b = str_replace('"','\\"',$b); 
echo '{ "a" : "1", "b" : "' . $b . '"}';

2 Cevap

Sadece bir ters eğik çizgi ile kaçış:

> JSON.stringify({"a": 5, "b": 'a "kitty" mighty odd'})
{"a":5,"b":"a \"kitty\" mighty odd"}
> JSON.parse('{"a":5,"b":"a \\"kitty\\" mighty odd"}')
Object
  a: 5
  b: a "kitty" mighty odd
  __proto__: Object

JSON ayrıştırıcıları \", bir çift tırnak gibi çift tırnaklı dizge içinde tanır. Bir JavaScript ayrıştırıcı geçmek, daha sonra başka bir JSON ayrıştırıcı pas var çünkü ikinci örnekte, çift ters eğik çizgi gerekli olduğunu unutmayın.

Sadece json_encode (herhangi bir PHP element) kullanmak, otomatik olarak ayrıştırır olacaktır.