0

我的 MVC 视图中有一个 HTML SPAN(类: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 响应,但不更新跨度。可能的原因是什么?以及如何解决?

4

2 回答 2

1

尝试指定dataTypeajax响应。innerText也不适用于firefox。所以尝试使用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);
        }
    });
于 2013-07-31T05:32:48.573 回答
1

请尝试Text()html()代替innerText()

像这样,

$('span.displayText')[index].Text(result);
于 2013-07-31T05:25:22.760 回答