私はFirefox 14.0.1と最新のjqueryを使用しています。アンパサンドがエスケープされていないため、アプリケーションで次のコード エラーが発生します。ここまでは順調ですね。ただし、ページ ソースをファイルにコピーして Web サーバーにそれを提供させると、コードは正常に動作します。ここで何が起こっているのか、何か考えはありますか?!
あたたかく
ジョン
function create_dialog () {
var new_dialog = $('<div id="new_dialog"/>');
new_dialog.dialog({ autoOpen: true, modal: true, open: foo, height: 400 });
function foo() {
$.ajax({
url: 'http://localhost:8010/ecomm/?ajax=1&state=pop_pl_cst',
cache: false,
success: function (data, textStatus, jqXHR)
{ new_dialog.append('<div>' + 'foo A&E' + '</div>'); },
dataType: 'xml',
error: function(jqXHR, textStatus, fred ) {alert('oops ' + textStatus);},
});
}; // foo
}
編集:上記は、エラーを再現するための私のコードの単純なバージョンです。以下が実際のバージョンです。アンパサンドなどをエスケープすることはできますが、同じコードが同じページのように見えるものとは異なる理由を説明していません。どこか違うところがあるはず…
function create_dialog ( ) {
var new_dialog = $('<div id="new_dialog"/>');
new_dialog.dialog({ autoOpen: true, modal: true, open: foo, height: 400 });
function foo() {
$.ajax({
url: 'http://localhost:8010/ecomm/?ajax=1&state=pop_pl_cst',
cache: false,
success: success,
dataType: 'xml',
error: function(jqXHR, textStatus, fred ) {alert('oops ' + textStatus);},
});
function success(data, textStatus, jqXHR) {
// alert(data);
$(data).find('row').each(process_row);
function process_row () {
console.log($(this).attr('pop_text'));
new_dialog.append($('<div>' + $(this).attr('pop_text') + '</div>'));
// new_dialog.append('<div>' + 'foo' + '</div>');
}
} // success
}; // foo
}
私が気づいたことの 1 つは、データ型がテキストの場合、jquery はスタンドアロン ページ (機能するページ) でそれを xml に解析しますが、アプリ ページでは解析しないことです。