JavaScript:从JSON数组获取元素

JavaScript:从JSON数组获取元素,javascript,json,Javascript,Json,在从视图执行JQuery请求后,我从ASP.NET MVC控制器接收以下形式的JSON对象: [ { "detectedLanguage": { "language": "de", "score": 1.0 }, "translations": [ { "text": "This is a test.", "to": "en" } ] } ] 在视图方面,我喜欢解析“text

在从视图执行JQuery请求后,我从ASP.NET MVC控制器接收以下形式的JSON对象:

[
  {
    "detectedLanguage": {
      "language": "de",
      "score": 1.0
    },
    "translations": [
      {
        "text": "This is a test.",
        "to": "en"
      }
    ]
  }
]
在视图方面,我喜欢解析“text”属性以更新DIV内容

目前,我正在努力从JSON对象/数组中获取元素:

function doTranslation() {
    const textBody = document.getElementById("TextSource").value;

    var textData = { LanguageFrom: "", LanguageTo: "", TextSource: textBody, TextResult: "" };
    var requestData = JSON.stringify(textData);

    $.ajax({
        url: "/Translations/Translate",
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        data: requestData,
        success: function (data) {
            document.getElementById("PreviewText").innerHTML = data[0].translations[0].text;
        },
        error: function () {
            document.getElementById("PreviewText").innerHTML = "Error";
        }
    });
}

$("#spinButton").on('click', doTranslation);
感谢您的帮助,谢谢

这是我想用JS代码在同一视图中更新的div:

            <!-- Preview Tab-->
            <div role="tabpanel" class="tab-pane" id="preview">
                <div><a class="btn btn-success float-right" style="color:white;" id="spinButton"><i class="fas fa-sync"></i> &nbsp; Translate</a></div><br />
                <div id="PreviewText">Press the <strong>Translate</strong> Button to Translate your text Source...</div>               
            </div>
        </div>
    </div>
</div>

@section Scripts {    
    <script src="~/js/translate.js"></script>
将显示文本

以下是Chrome的调试输出:

错误是div没有用“text”内容更新

控制台错误为:

translate.js:18 Uncaught TypeError: Cannot read property '0' of undefined
    at Object.success (translate.js:18)
    at fire (jquery.js:3268)
    at Object.fireWith [as resolveWith] (jquery.js:3398)
    at done (jquery.js:9305)
    at XMLHttpRequest.<anonymous> (jquery.js:9548)
translate.js:18未捕获类型错误:无法读取未定义的属性“0”
at Object.success(translate.js:18)
失火(jquery.js:3268)
在Object.fireWith[as resolveWith](jquery.js:3398)
完成时(jquery.js:9305)
在XMLHttpRequest。(jquery.js:9548)
其中“数据”显示了我用鼠标悬停时的完整结果。将鼠标悬停在“翻译”或“文本”上不显示任何内容


也许这会让它变得清晰一点。

看起来JSON还没有被解析,
数据是一个字符串,而不是JS对象

通常,您应该在AJAXparameters中指定
数据类型:“json”
,但这似乎不起作用(服务器首先序列化json)


查看服务器实际返回的内容,或在成功函数中添加
data=JSON.parse(data)

您是否收到任何错误?请务必提及。
data[0]。翻译[0]。文本看起来不错。到底发生了什么?你没有说发生了什么,而是说了预期的结果。任何错误等等@Hereticsmonkey很难相信我们已经抱怨了将近十年了。。。没有明显的进展。@JaredSmith是的,在这一点上,这可能是一个失败的原因,但我喜欢那篇文章:)。
translate.js:18 Uncaught TypeError: Cannot read property '0' of undefined
    at Object.success (translate.js:18)
    at fire (jquery.js:3268)
    at Object.fireWith [as resolveWith] (jquery.js:3398)
    at done (jquery.js:9305)
    at XMLHttpRequest.<anonymous> (jquery.js:9548)