jQuery AJAX响应JSON获取子节点

时间:2015-06-26 21:46:26

标签: javascript jquery ajax json

我正在尝试从AJAX调用中获取responseJSON并将一个元素提取到变量formDigestValue。我尝试使用JSON.parse(),$ .parseJSON()和其他一些方法尝试返回响应的十几种方法,但有两个主要问题我似乎无法弄清楚。我检查if(data.lenght> 0){做某事},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

好吧,我想在访问子节点的注释和其余的将参数传递给成功函数之间,我几乎可以去了。我的主要是,我似乎无法将其作为论据传递。我最初试图说,但不要以为我正确地写了解释。我试过了:

Success: function(responseJSON)...

以及

Success: function(data)...

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

以下是firebug的运行情况: Function Error

3 个答案:

答案 0 :(得分:2)

尝试添加带有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);
            }
        });

答案 1 :(得分:0)

从我的iPhone发帖,所以,这很难。从第一眼看,您没有成功捕获返回的结果。请尝试以下方法。

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

答案 2 :(得分:0)

如果json的那个块是你$.parseJSON(responseJSON)返回的那个,那么你是对的,你只需要深入挖掘一下:

           contextHeaders = $.parseJSON(responseJSON);
           formDigestValue = contextHeaders.d.GetContextWebInformation.FormDigestValue;

希望有所帮助:)