2014-03-28 31 views
0

我有这样的代码:如何从可变负载JSON,反对

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)。我做错了什么?

回答

2

我想你是误会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'); 
+0

在那里有一个巨大的错字,刚刚修复它 – Hless

0

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 
}); 
+0

好去处。固定。 – Quentin