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

  • Maya Learning Channel

    Maya Learnin

    23 HAZİRAN 2010
  • Paul Schroder

    Paul Schrode

    30 Kasım 2007
  • PaysNatalAu's channel

    PaysNatalAu'

    11 Aralık 2010