Javascript,无法读取未定义的属性,但会打印到控制台
我有一个Javascript,无法读取未定义的属性,但会打印到控制台,javascript,jquery,html,Javascript,Jquery,Html,我有一个jQuery调用,它将数据输入到一个对象中。 我试图使用object值设置为javascript中的标签文本,但它抛出 “无法读取未定义的属性“0”。” 其中,当它成功地将值打印到控制台时 var数据; 变种optionData; $(文档).ready(函数(){ $.ajax({ url:“辅导评估工具.aspx/GetCATQuestionAndOptions”, 键入:“POST”, 数据类型:“json”, contentType:“应用程序/json;字符集=utf-8”,
jQuery
调用,它将数据输入到一个对象中。
我试图使用object值设置为javascript
中的标签文本,但它抛出
“无法读取未定义的属性“0”。”
其中,当它成功地将值打印到控制台时
var数据;
变种optionData;
$(文档).ready(函数(){
$.ajax({
url:“辅导评估工具.aspx/GetCATQuestionAndOptions”,
键入:“POST”,
数据类型:“json”,
contentType:“应用程序/json;字符集=utf-8”,
成功:函数(数据){
questionData=data.d[0];
optionData=data.d[1];
console.log(questionData[0].QuestionText);
console.log(“问题数据”,问题数据);
日志(“选项数据”,optionData);
},
错误:函数(错误){
console.log(错误);
警报('检索数据时出错。请与支持人员联系');
}
});
document.getElementById('firstQuestion')。innerHTML=questionData[0]。QuestionText;
});
$.ajax()
,因此在填充questionData
之前设置innerHTML
。在成功回调中移动第22行,以确保数据在使用前可用
虽然在技术上可以使呼叫同步,但这不是一个好主意
$.ajax({
// ...
async: false,
// ...
});
该代码将阻止任何其他JavaScript执行,直到ajax调用完成
顺便说一句,一些JavaScript工具可以帮助您在代码在浏览器中执行之前捕获这些错误。我最近将一些JS转换为TS,并对捕获的bug数量非常满意
干杯 实时控制台输出的可能副本将在对象更改时更新。非常感谢Michael,它确实有效,我很感激。当然!如果它完全解决了您的问题,请将答案标记为正确。它将帮助其他人找到类似问题的答案。:-)是的,我做了标记,我希望有一天我会在TS上工作,实际上我更像一个.net开发人员。谢谢你的帮助。既然您在这里,我可以问您另一个问题吗?
$.ajax({async:false})
调用只是同步调用的一个部分示例,以显示它的外观。您必须为它提供额外的选项才能真正执行任何有用的操作。我无法将代码粘贴到注释var ddlFirstResponse=$(“#ddlFirstResponse”);ddlFirstResponse.empty();ddlFirstResponse.append($(“”).val(“”).html(“”));$。每个(数据,函数(i,optionData){ddlFirstResponse.append($(“”).val(optionData.OptionId).html(optionData.OptionText));});