Json响应没有在Firefox中更新

时间:2013-07-31 05:08:01

标签: asp.net-mvc json jquery

我的MVC视图中有一个HTML SPAN(class:displayText),它有“typeId”和“idValue”属性。 目标是从数据库表中获取传递的“typeId”和“idValue”的DisplayText属性。

我的视图中有这样的SPAN数量,所以我在document.ready()函数中调用以下方法来获取显示文本并在视图中显示它,这样用户就不需要等待了。

$('span.displayText').each(
function (index) {
    var url = $('#UrlGetDisplayName').val();
    $.ajax({
        type: "GET",
        url: url,
        data: ({ typeId: $(this).attr('typeId'),
            value: $(this).attr('idValue')
        }),
        success: function (result) {
            $('span.displayText')[index].innerText = result;
        }
    });
})

在上面的代码中,UrlGetDisplayName是我的MVC视图上的HiddenField的ID,其中包含以下MVC控制器操作的URL,该操作负责从数据库中显示值。

[HttpGet]
public virtual JsonResult GetDisplayTextByType(string typeId, string idValue)
{
    string displayText = "";
    /* Code to call a database method to fetch text by type, and assign it to displayText */
return Json(displayText, JsonRequestBehavior.AllowGet);
}

这在IE和Chrome中完美运行,但在Firefox中它不会更新SPAN控件中的值。我可以在Firebug中监视被调用的Controller操作,并且它返回正确的Json响应,但不更新跨度。可能的原因是什么?以及如何解决它?

2 个答案:

答案 0 :(得分:1)

请尝试Text()html()而不是innerText()

像这样,

$('span.displayText')[index].Text(result);

答案 1 :(得分:1)

尝试指定ajax响应的dataType。而且innerText将不适用于firefox.So尝试使用html()text()

 $.ajax({
        type: "GET",
        url: url, 
        dataType:'json',
        data: ({ typeId: $(this).attr('typeId'),
            value: $(this).attr('idValue')
        }),
        success: function (result) {
            var response    = JSON.stringify(result);
            response        = JSON.parse(response);
            console.log(response);//Logging the response to browser console
            $('span.displayText')[index].html(response);
        }
    });