javascript - jQuery AJAX 响应 JSON 获取子节点

标签 javascript jquery ajax json

我正在尝试从 AJAX 调用中获取 responseJSON,并将一个元素提取到变量 formDigestValue 中。我已经尝试了十几种尝试返回响应的方法,使用 JSON.parse()、$.parseJSON() 和其他一些方法,但有 2 个主要问题我似乎无法弄清楚。我检查了 if (data.lenght > 0){do something}, response.length, responseJSON, jqXHR, XHR,我似乎找不到保存最终发送到成功函数的数据的变量。我尝试过将 ajax 调用设置为一个变量 (var y = $.ajax()...) 并以这种方式进行操作。

我一直在阅读不同的文章并尝试不同的方法,但似乎没有什么是正确的,它似乎相当简单,但我觉得我只是错过了一些简单的东西。

    $(document).ready(function () {

        var siteURL = "xxx";
        var formDigestValue = "";

        jQuery.ajax({
                url: siteURL + "/_api/contextinfo",
                type: "POST",
                headers: { 
                    "accept": "application/json;odata=verbose",
                    "content-type": "application/json;odata=verbose",
                },
                success: function(){
                    contextHeaders = $.parseJSON(responseJSON);
                    formDigestValue = contextHeaders.FormDigestValue;
                }
            });
...

如有任何建议,我们将不胜感激。作为引用,返回的 JSON 如下所示。我想弄清楚我是否还需要任何额外的东西才能到达子节点,因为它看起来有点埋没了(我用缩进打破它只是为了显示深度):

{
    "d":
    {
        "GetContextWebInformation":
        {
            "__metadata":
            {
                "type":"SP.ContextWebInformation"
            },
            "FormDigestTimeoutSeconds":1800,
            "FormDigestValue":"0xADC9732A0652EF933F4dfg1EF9C1B75131456123492CFFB91233261B46F58FD40FF980C475529B663CC654629826ECBACA761558591785D7BA7F3B8C62E2CB72,26 Jun 2015 21:20:10 -0000",
            "LibraryVersion":"15.0.4631.1000",
            "SiteFullUrl":"http://example.com/",
            "SupportedSchemaVersions":
            {
                "__metadata":
                {
                    "type":"Collection(Edm.String)"
                },
                "results":["14.0.0.0","15.0.0.0"]
            },
            "WebFullUrl":"http://www.example.cm"
        }
    }
}

编辑 6/27

好吧,我认为在关于访问子节点的注释和关于将参数传递给成功函数的其余部分之间,我差一点就完成了。我的主要问题是,我似乎无法将其作为论据传递。我一开始试着说出来,但我认为我没有正确地写下解释。我试过:

成功:函数(responseJSON)...

还有

成功:函数(数据)...

但是数据似乎从来没有真正进入函数,它的空值。我知道返回的 json,但在将其传递到成功函数时遇到问题

这是运行时的 Firebug : Function Error

最佳答案

尝试添加带有json值的dataType选项,并且不要忘记回调成功函数至少接受一个参数,即服务器返回的数据。

jQuery.ajax({
            url: siteURL + "/_api/contextinfo",
            type: "POST",
            dataType: 'json',
            headers: { 
                "accept": "application/json;odata=verbose",
                "content-type": "application/json;odata=verbose",
            },
            success: function(data){
                console.log(data);
            }
        });

关于javascript - jQuery AJAX 响应 JSON 获取子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31082641/

相关文章:

javascript - 在每次迭代中使用 Jquery 更改新创建的 DIv 的样式

jquery - 调试一个简单的 jQuery 文档

javascript - Kendo 进度条在进行 ajax 调用时未启动

javascript - 为什么这在 IE 中失败?

javascript - 将主干与第三方 API 一起使用

javascript - 无法使用highlight.js 以正确的顺序呈现 XML

javascript - 如何根据名称对表格进行排序

javascript - 如何根据另一个页面中的内容更改图像链接

javascript - jQuery AJAX 接收到的数据在成功处理程序之外为空

javascript - 使用 javascript 关闭 ajax Accordion