HTML Validator tarafından atılan bir uyarı Fix

5 Cevap php

Hi
I have some JavaScript code in my php website.
This code uses jQuery, and builds a < select > menu using ajax calls.

İşte kod

sel.append('<option value="' + data[i].id + '">' + data[i].nombre + '</option>');

Ve bu bana şu uyarıyı veriyor

line 240 column 82 - Warning: '<' + '/' + letter not allowed here

Herkes bu uyarıyı nasıl düzeltebilirim biliyorum, bu yüzden benim html doğrular mı? Teşekkürler

5 Cevap

ETAGO olarak bilinen - - bir <script> gibi bir CDATA elemanı uçları herhangi bir sorun, </ sekansı olmasıdır. Siz tarayıcılarda </ ile uzak olsun ama değil </script olabilir.

Basit çözüm bir ters eğik çizgi-kaçış ile </ dizisi kırmak için:

sel.append('<option value="' + data[i].id + '">' + data[i].nombre + '<\/option>');

HTML-kaçan sizin id ve nombre değerleri değil çünkü Ancak bu hat hala sorunları var. Onlar <, & veya " içerebilir, sadece kendinizi bir istemci tarafı XSS ​​açığı inşa ettik!

Bu yüzden belki basit, sadece standart DOM kullanmak, dizeleri içine koyarak önce metin değerlerini HTML-kaçış, ya da:

sel.append (yeni Opsiyon (veri [i] nombre, veri [i] id)..);

Harici bir dosyada javascript koydu.

Eğer html / xhtml sayfa javascript yazıyorsanız, size CDATA'da javascript koyabilirsiniz.Eğer

<script type="text/javascript">
/* <![CDATA[ */
console.log("..js code here..");
/* ]]> */
</script>

XHTML belgesi XML olarak kodlanmış değildir (ve ben yapmak için çalışıyoruz ne tahmin ediyorum) Eğer aşağıdaki gibi bir şey yapmanız gereken kod eklemek için:

<script type="text/javascript">
//<![CDATA[

alert("<This is now valid XHTML>");

//]]>
</script>

Sizin kod etrafında <!-- ve --> koyun.