1. 场景:(1)在controller的文件中有语句echo json_encode($ret); 位置1
(2)在显示页面test.html中,有如下代码:
function doSubmit(obj){
objTable = obj.parentNode.parentNode.parentNode.parentNode;
objTexts = objTable.getElementsByTagName(‘input‘);
objRet = objTable.getElementsByTagName(‘textarea‘)[0]; 位置2
strAction = objTexts[0].value;
strParam = objTexts[1].value;
objData = {a: strAction, p: eval("(" + strParam + ")")};
console.log(objData);
$.ajax({
type: "POST",
url: ‘index.php/data‘,
dataType: "text",
data: objData,
success: function(ret, status, xhr){
objRet.innerText = ret; 位置3
result = eval("(" + ret + ")");
console.log(result);
},
2. 问题:
从上述代码 objRet = objTable.getElementsByTagName(‘textarea‘)[0]; 位置2 和 位置3 中推断,
应该在textarea中显示返回内容。但是实际中textarea中什么也没有返回。
3. 解决方法:
objRet.innerText改为objRet.innerHTML
innerHTML是符合W3C标准的属性,而innerText只适用于IE浏览器,因此,尽可能地去使用innerHTML,而少用 innerText,如果要输出不含HTML标签的内容,可以使用innerHTML取得包含HTML标签的内容后,再用正则表达式去除HTML标签。