Строка Json неправильно добавляется в IE 8 - PullRequest
0 голосов
/ 02 апреля 2011

Мой контроллер возвращает эту строку следующим образом:

return Json(indication.Model.PrepaymentExport);

Я добавляю ее в div на внешнем интерфейсе следующим образом:

$('#termSheetPrinted').append(data + '<br>');

Это работает в FF, но не в IE= /

Кажется, я получил это в IE, но я не знаю, имеет ли это отношение?

Сведения об ошибке веб-страницы

Пользовательский агент: Mozilla / 4.0 (совместимо; MSIE8.0; Windows NT 5.1; Trident / 4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E) Отметка времени: пт, 1 апреля 2011 г. 20:47:41 UTC

Сообщение: неопределенная строковая константа Строка: 133844620 Код: 88 Код: 0 URI: http://localhost/Extranet/mvc/Indications.cfc/analysis/b16fc100-05ad-4631-882e-908e707480fd

Редактировать:

возвращаемая строка выглядит следующим образом:

<div style="font-weight:bold">Prepayment Value</div><table id="TotalValueStringtableId" class="exposureGrid" width="150px" cellpadding="2" cellspacing="0"><tbody><tr><td></td><td colspan="5" class="resultsSubHeader" align="center"> Time Remaining </td></tr><tr><td class="resultsSubHeader">Replacement Rate</td><td class="resultsSubHeader">4 yrs</td><td class="resultsSubHeader">3 yrs</td><td class="resultsSubHeader">2 yrs</td><td class="resultsSubHeader">1 yrs</td></tr><tr><td targetrate="">3.38</td><td undefined="" style="white-space: nowrap;">$390,712</td><td undefined="" style="white-space: nowrap;">$298,676</td><td undefined="" style="white-space: nowrap;">$196,304</td><td undefined="" style="white-space: nowrap;">$99,828</td></tr><tr><td targetrate="">2.88</td><td undefined="" style="white-space: nowrap;">$197,881</td><td undefined="" style="white-space: nowrap;">$150,455</td><td undefined="" style="white-space: nowrap;">$98,663</td><td undefined="" style="white-space: nowrap;">$50,049</td></tr><tr><td targetrate="">1.88</td><td undefined="" style="white-space: nowrap;">($201,638)</td><td undefined="" style="white-space: nowrap;">($152,729)</td><td undefined="" style="white-space: nowrap;">($99,699)</td><td undefined="" style="white-space: nowrap;">($50,323)</td></tr><tr><td targetrate="">1.38</td><td undefined="" style="white-space: nowrap;">($406,621)</td><td undefined="" style="white-space: nowrap;">($307,772)</td><td undefined="" style="white-space: nowrap;">($200,445)</td><td undefined="" style="white-space: nowrap;">($100,920)</td></tr></tbody></table>

Ответы [ 2 ]

1 голос
/ 02 апреля 2011

Что-то странное в коде вашего сервера. Вы показали HTML в ответе, и все же вы возвращаете Json на сервер. Это не имеет никакого смысла. Если на сервере есть какая-то строка, представляющая собой HTML, тогда верните необработанный HTML, например, так:

return Content(indication.Model.PrepaymentExport, "text/html");

и получить его от клиента:

$.ajax({
    url: '/home/foo',
    type: 'POST',
    success: function(result) {
        $('#termSheetPrinted').append(data + '<br/>');
    }
});

Если PrepaymentExport - это какой-то объект, который вы хотите сериализовать в JSON, тогда возвращайте Json с сервера, как вы это делали, но при обратном вызове успеха вы не можете добавлять объекты в DOM, только HTML. Так что в этом случае:

$.getJSON('/home/foo', function(data) {
    // data here will be an object so don't append it directly to the DOM.
    // use some string property which represents HTML or build tags manually
    // without more details about what indication.Model.PrepaymentExport represents
    // on the server I cannot help much
});
0 голосов
/ 02 апреля 2011

Я столкнулся с этой проблемой на днях. jQuery ajax результаты по умолчанию устанавливаются в кэш. Большинство браузеров игнорируют это, а IE - нет. Просто установите вызов ajax в js для кэширования false, и он должен начать работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...