【问题标题】:JSON Variable showing as textJSON 变量显示为文本
【发布时间】:2009-12-04 17:04:09
【问题描述】:

我对 JSON 不太了解,所以任何帮助都会很棒...

我正在通过 JQuery 的 .load 加载页面。

我将 varname 设置为变量,但它发布为实际变量名而不是我设置的名称。

换句话说,它显示为“varname”而不是“class_id”。

var varname = "class_id";

$(this).siblings(".container").load(loadurl,{varname:openedid,"all_ids":allids});

Firebug Screenshot

【问题讨论】:

    标签: javascript json


    【解决方案1】:

    这是因为 (AFAIK) 您不能将 expression 作为 ID 放在哈希构造函数中,因为它们会自动引用为字符串。

    换句话说,这是有效的 JavaScript

    $(this).load(url, {name: "Foo", age: 13});
    

    nameage 的键在那里。在 JavaScript 中,您不必引用散列的键,尽管在严格的 JSON 中,引用对于键是必需的。 (但引用不会受到伤害。在某些情况下,正如 Jordan 在 cmets 中建议的那样,这是必要的,例如您想使用保留字如 var 作为哈希键)

    为了达到您想要的效果,我会建议一个冗长的解决方案(任何聪明的单线人?)

    var varname = "class_id";
    
    var data = {all_ids: allids};
    data[varname] = openedid;
    
    $(this).siblings('.container').load(loadurl, data);
    

    【讨论】:

    • 在某些情况下引用键是必要的——例如,如果你使用保留字作为键,IE6 会失败,所以如果你尝试 { class : "some-value" } 它会呕吐,因为“类”是保留字。我认为IE7+等现代浏览器已经摆脱了这种苦恼。
    • 聪明的单行字?我们的目标不是实现聪明的代码。你已经发布了正确的方法来做到这一点。请记住,编写代码比调试它更容易,因此,如果您尽可能编写聪明的代码,那么您以后就不会聪明到自己调试它。
    • @David Hedlund:我同意;虽然我认为我们这里的所有人在想到聪明的单线时都会暗自激动。来吧,承认吧:p
    猜你喜欢
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 2019-09-01
    相关资源
    最近更新 更多