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

  • boniver

    boniver

    17 NİSAN 2006
  • kimaliz

    kimaliz

    18 Temmuz 2006
  • MrExcite96

    MrExcite96

    17 ŞUBAT 2011