为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript,无法读取未定义的属性,但打印到控制台

Javascript,无法读取未定义的属性,但打印到控制台

慕码人8056858 2021-06-01 18:35:57
我有一个jQuery调用,它正在将数据输入到一个对象中。我正在尝试使用对象值设置为来自 的标签文本javascript,但它抛出“无法读取未定义的属性‘0’。”当它成功地将值打印到控制台时。var questionData;var optionData;$(document).ready(function () {        $.ajax({        url: 'coaching-assessment-tool.aspx/GetCATQuestionAndOptions',        type: 'POST',        dataType: 'json',        contentType: "application/json; charset=utf-8",        success: function (data) {                        questionData = data.d[0];            optionData = data.d[1];                       console.log(questionData[0].QuestionText);            console.log("Question Data", questionData);            console.log("Option Data", optionData);        },        error: function (error) {            console.log(error);            alert('Error retrieving data. Please contact support.');        }            });    document.getElementById('firstQuestion').innerHTML = questionData[0].QuestionText;});我需要标签文本作为对象值 (questionData[0].QuestionText)。
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

$.ajax() 默认情况下是异步的,因此innerHTMLquestionData填充之前进行设置。在成功回调中移动第 22 行以确保数据在使用前可用。

虽然在技术上可以使调用同步,但这是一个坏主意。

$.ajax({   // ...
   async: false,   // ...});

该代码将阻止任何其他 JavaScript 执行,直到 ajax 调用完成。

顺便说一句,像TypeScript这样的 JavaScript 工具可以帮助您在代码在浏览器中执行之前发现这些错误。我最近将一些 JS 转换为 TS 并且对我捕获的错误数量感到非常满意。


查看完整回答
反对 回复 2021-06-03
  • 1 回答
  • 0 关注
  • 306 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信