jQuery Form プラグインを使用して、AJAX 経由でフォームを送信し、JSON 応答を受け取ります。
$('#'+searchFormView.form.form.id).ajaxForm({
dataType:'json',
success:This.renderSearchResults,
error:This.error
});
HTTP 応答本文:
{
"grid":{
"headers":[
"Image","Additional","data","button"
],
"rows":[
["<img src=\"\Path_to_image\" alt=\"picture\">",
"Additonal",
"data",
"<button>Button text<\/button>"
],
[Some more of these arrays]
]
}
}
Chrome と FF はこれでまったく問題ありません。それはうまくレンダリングされます。IE は、success メソッドに到達するまでにデータ値から HTML を取り除きます。
renderSearchResults:function(data){
console.log(data.grid.rows[0][0]);
// Render the grid.
}
IE でのコンソール ログの結果:
Log:
success メソッドの実行中にローカル変数を監視すると、次のようになります。
"{
\"grid\":{
\"headers\":[
\"Image\",
\"Additional\",
\"data\",
\"Button\"
],
\"rows\":[
[\"\",\"Additional\",\"data\",\"Button text<\\/button>\"],
...
ご覧のとおり、HTML タグはなくなりました (不思議なことに、タグはまだ残っています)。
これは XSS 保護であるはずですか?
どうすれば回避できますか?