SORU
23 Kasım 2010, Salı


Nasıl bir JSON dize yeni satır karakterleri javascript kullanarak içeren kaçmak için?

Bir değer, yeni bir çizgi karakter olması bir JSON dize forma var. Bu kaçtı ve daha sonra ajax çağrısı kullanarak gönderdi. Herhangi bir javascript dize kaçmak için bir yol önerebilirsiniz. JQuery kullanıyorum.

CEVAP
23 Kasım 2010, Salı


Eğer JSON ve .stringify() al. Sonra .replace() yöntemi ve \\n \n tüm tekrarlarını değiştirmek.

DÜZENLEME:

Benim bildiğim kadarıyla, bir dize tüm özel karakterler kaçmak için tanınmış JS kütüphaneleri vardır. Ama, .replace() yöntem zincir ve bu gibi özel karakterler her yerini:

var myJSONString = JSON.stringify(myJSON);
var myEscapedJSONString = myJSONString.replace(/\\n/g, "\\n")
                                      .replace(/\\'/g, "\\'")
                                      .replace(/\\"/g, '\\"')
                                      .replace(/\\&/g, "\\&")
                                      .replace(/\\r/g, "\\r")
                                      .replace(/\\t/g, "\\t")
                                      .replace(/\\b/g, "\\b")
                                      .replace(/\\f/g, "\\f");
// myEscapedJSONString is now ready to be POST'ed to the server. 

Ama bu çok kötü, değil mi? O seni parçalara kodu kırmak ve senaryonun ana akış temiz tutmak için izin fonksiyonları, güzelliği girin ve .replace() 8 zincirleme arama ücretsiz. Hadi bu işlevi bir fonksiyonu, escapeSpecialChars() içine koydu. Hadi String nesne prototype chain eklemenize izin verin, escapeSpecialChars() doğrudan String nesneleri üzerinde diyebiliriz.

Bunun gibi

String.prototype.escapeSpecialChars = function() {
    return this.replace(/\\n/g, "\\n")
               .replace(/\\'/g, "\\'")
               .replace(/\\"/g, '\\"')
               .replace(/\\&/g, "\\&")
               .replace(/\\r/g, "\\r")
               .replace(/\\t/g, "\\t")
               .replace(/\\b/g, "\\b")
               .replace(/\\f/g, "\\f");
};

Bu fonksiyon tanımladık sonra bizim kod ana gövdesi bu kadar basittir:

var myJSONString = JSON.stringify(myJSON);
var myEscapedJSONString = myJSONString.escapeSpecialChars();
// myEscapedJSONString is now ready to be POST'ed to the server

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blendtec

    Blendtec

    30 EKİM 2006
  • Hey Nadine

    Hey Nadine

    24 Kasım 2006
  • ItZWaffleS420

    ItZWaffleS42

    9 EYLÜL 2011