Кажется, я не ближе к решению на стороне клиента. Я изменил код для использования jQuery-jsonp. Теперь это выглядит так:
$(function() {
$.jsonp({
url: "http://www.codemash.org/rest/sessions.json?format=jsonp&callback=?",
async: false,
dataType: "jsonp",
success: successFunc,
complete: completeFunc,
error: errorFunc,
dataFilter: dataFilterFunc
});
});
function successFunc(json, textStatus) {
console.log('successFunc(). enter.');
}
function completeFunc(xOptions, textStatus) {
console.log('complete(). textStatus: ['+textStatus + ']');
}
function errorFunc(xOptions, textStatus) {
console.log('errorFunc(). textStatus: [' + textStatus + ']');
}
function dataFilterFunc(j) {
console.log('dataFilterFunc(). enter.');
return j;
}
Журнал консоли Firebug отображает:
X unterminated string literal
[{"URI"..... ( the json returned from the server
errorFunc(). textStatus: [error]
complete(). textStatus: [error]
По какой-то причине анализ json в моем браузере Firefox (FF v3.0.15, Linux Ubuntu 9.0.4) вызывает исключение «неопределенный строковый литерал». Я знаю, если я удалю строки '& q u o t' и два символа в блоке 'Maintainable ASP.NET MVC', тогда json будет успешно проанализирован. Поскольку у меня нет никакого контроля на стороне сервера, могу ли я что-нибудь сделать с клиентским javascript, который в итоге получит строку json сервера, как есть, в объекте json на стороне клиента. Я думал, что свойство dataFilter для jsonp было настроено именно для этой цели, чтобы перехватить json и «очистить» его. Однако эта функция в моем коде не вызывается, вполне возможно, потому что json, который передается в функцию dataFilterFunc, не будет успешно проанализирован.