如何从变量,对象加载JSON

How to load JSON from variable, object

本文关键字:对象 加载 JSON 变量      更新时间:2023-09-26

我有这样的代码:

var browserName = "chrome";
    function getBrowserHack() {
        var browsersStack = {
            "chrome" : {
                "hacks": {
                    "global" : "!!window.chrome;",
                    "version" : {
                        "32" : "!!window.chrome && !!window.chrome.webstore;"
                    }
                }
            },
            "firefox" : {
                "hacks": {
                    "global" : "!!window.sidebar;",
                    "version" : {
                        "2": "(function x(){})[-6]=='x';"
                    }
                }
            },
            "safari" : {
                "hacks" : {
                    "global" : "/constructor/i.test(window.HTMLElement);"
                }
            },
            "opera" : {
                "hacks" : {
                    "global" : "window.opera && window.opera.version() == X;"
                }
            }
        }
        return $.getJSON(browsersStack, function(data){
            var browsers = data[browserName];
            return browsers;
        });
    }

我需要用这个JSON数据返回函数,我有一个错误[object%20Object] 404 (Not Found)。我做错了什么?

我想你误解了getJSON,你有JS对象已经在你的代码,试试这个:

function getBrowserHack(browserName) {
    var browsersStack = {
        "chrome" : {
            "hacks": {
                "global" : "!!window.chrome;",
                "version" : {
                    "32" : "!!window.chrome && !!window.chrome.webstore;"
                }
            }
        },
        "firefox" : {
            "hacks": {
                "global" : "!!window.sidebar;",
                "version" : {
                    "2": "(function x(){})[-6]=='x';"
                }
            }
        },
        "safari" : {
            "hacks" : {
                "global" : "/constructor/i.test(window.HTMLElement);"
            }
        },
        "opera" : {
            "hacks" : {
                "global" : "window.opera && window.opera.version() == X;"
            }
        }
    }
    return browsersStack[browserName];
}
// Now get the browserhack by calling:
var browserHack = getBrowserHack('chrome');

getJSON是一个Ajax函数。它向URL(第一个参数)发出HTTP请求,并使用第二个参数中使用的函数处理响应。

你甚至没有任何JSON。你只是有一个对象。

// Remove this line
return $.getJSON(browsersStack, function(data){
// Keep these two lines
    // but use the correct variable name here - you aren't copying the object to data
    var browsers = browsersStack[browserName];
    return browsers;
// Remove this line
});