【问题标题】:Json string not getting appended properly in IE 8Json 字符串未在 IE 8 中正确附加
【发布时间】:2011-07-27 23:36:23
【问题描述】:

我的控制器像这样返回这个字符串:

return Json(indication.Model.PrepaymentExport);

我将它附加到前端的 div 中,如下所示:

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

它在 FF 中有效,但在 IE 中无效 =/

我似乎在 IE 中得到了这个,但我不知道它是否相关?

网页错误详情

用户代理:Mozilla/4.0(兼容;MSIE 8.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) 时间戳:2011 年 4 月 1 日星期五 20:47:41 UTC

消息:未终止的字符串常量 专线:133844620 字符:88 代码:0 网址: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>

【问题讨论】:

  • 另外,它似乎有时有效,但并非一直有效 =/
  • 什么时候出现这个错误?返回 JSON 时,或页面加载时?
  • 当我尝试对返回的 Json 做任何事情时,我得到了它。从服务器返回的是一个代表 html 代码的 c# 字符串
  • 把返回的字符串贴在上面。
  • 您是返回 JSON 字符串(即:{ "content" : "myContent" } )还是只返回那个字符串?

标签: jquery asp.net-mvc ajax


【解决方案1】:

您的服务器代码有些奇怪。您已在响应中显示 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
});

【讨论】:

    【解决方案2】:

    前几天我遇到了这个问题。 jQuery ajax 结果默认设置为缓存。大多数浏览器都会忽略它,但 IE 不会。只需将js中的ajax调用设置为cache false,就可以开始工作了。

    【讨论】:

      猜你喜欢
      • 2017-06-02
      • 1970-01-01
      • 2012-05-16
      • 2016-08-21
      • 2019-01-17
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多