我的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响应,但不更新跨度。可能的原因是什么?以及如何解决它?
答案 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);
}
});