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

  • L33TNoonProductions

    L33TNoonProd

    24 EYLÜL 2010
  • parlophone

    parlophone

    28 ŞUBAT 2006
  • technodromeband's channel

    technodromeb

    28 NİSAN 2011