jQuery AJAX响应JSON获取子节点

4
我正在尝试从AJAX调用中获取responseJSON并将一个元素提取到变量formDigestValue中。我尝试了约十二种方法来返回响应,包括使用JSON.parse()、$.parseJSON()等,但是有两个主要问题我似乎无法解决。我加入了一个检查if (data.lenght > 0) {do something},response.length、responseJSON、jqXHR、XHR,我无法找到保存数据的变量,该变量最终会被发送到success函数中。我尝试将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编辑

好的,我认为在访问子节点的评论和将参数传递给成功函数的其余部分之间,我已经明白了。我的主要问题是,我似乎无法将其作为参数传递。我一开始尝试了这样说,但我认为我没有正确地写出解释。我尝试过:

Success: function(responseJSON)...

以及

Success: function(data)...

但数据似乎从未真正进入函数,它是空值。我知道json返回了,但有问题将其传递到成功函数中

这是firebug运行时的情况:

Function Error

你所寻找的似乎是(遵循对象结构)contextHeaders.d.GetContextWebInformation.FormDigestValue。你可以通过迭代对象查找属性,但目前它就在那里。 - Jan
3个回答

2
尝试添加dataType选项,值为json,并且不要忘记回调成功函数至少需要一个参数,该参数是服务器返回的数据。
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);
            }
        });

0
如果那个 JSON 块是通过 $.parseJSON(responseJSON) 返回的,那么你是正确的,只需要深入挖掘一下即可:
           contextHeaders = $.parseJSON(responseJSON);
           formDigestValue = contextHeaders.d.GetContextWebInformation.FormDigestValue;

希望这能帮到你 :)


0

我用iPhone发帖,所以有点困难。从第一眼看起来,你没有在成功时捕获返回的结果。请尝试以下操作。

success: function(responseJSON) { contextHeaders = $.parseJSON(responseJSON);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接