· 

VisualforceでAjaxが動かなくなる

VisualforceでcommandButtonにrerender属性を設定して、

oncompleteにコールバック処理を記載したら動作してくれない。

オブジェクトに格納されているデータを画面上に一覧で出していて、一覧に対する更新処理中にローディング画像を表示している機能。

1年近く問題なく稼働していた機能なのだが、突然ローディング画像が消えなくなった。

 

VisualforceでcommandButtonにrerender属性を設定して、oncompleteにローディング画像消す処理を記載しています。

 

「なんだ???さっきまで動いてたのに。」

 

デバッグログを確認したところ特に問題なく、処理は正常に終了し、データも更新されている。

 

色々調べたところ、ブラウザのコンソールにエラーが出ており、XMLの生成でエラーになっている模様。

うーん。ますますわからん。

 

更に調査したところある特定のデータが一覧に表示されている場合にエラーが出ることが判明。

そのデータとは「サロゲートペア」文字が含まれているデータ。

 

知っている方は知っていると思いますが(私は知らなかった)XMLにサロゲートペア文字は使用できません。

 

ここからは推測ですが、VisualforceはAjaxで通信する際にXMLを使用しています。

ですので、サロゲートペアが中に含まれる場合は通信できません。

 

なんでjsonじゃないのよ。

 

 

あ、ちなみにLightningはjsonらしいですよ。確認してないけど。