jQuery.ParseJSON()包含函数引用

时间:2011-01-26 18:32:21

标签: jquery json

我在ASP.NET Web窗体应用程序中有一个回调函数,我试图返回一些方便的JSON,以便javascript函数管理数据。我能够发回一个包含我所有数据的JSON字符串,但现在我想获得以下结构:

{
 data: dataGoesHere
 function: function(){alert('hello');}
}

jQuery.parseJSON非常适用于像这样返回字符串的简单情况:

"{\"data\" : \"dataGoesHere\"}"

但是当你尝试做这样的事情时

"{
   \"data\" : \"dataGoesHere\"
   \"function" function(){alert('hello');}
}"

jQuery引发异常。我想知道是否可以创建一个字符串,以便jQuery可以解析为JSON,其中包含一个我可以稍后调用的函数引用。

我希望这是有道理的。感谢您的时间和回复!

3 个答案:

答案 0 :(得分:4)

这不是有效的JSON 出于安全原因,它被jQuery拒绝,以便完全阻止你想要做的事情。

相反,您可以调用eval,将其解释为Javascript文字 请注意,您需要将其包装在括号中,以确保它被解析为表达式而不是块。

答案 1 :(得分:0)

您可以将其设置为有效的JSON并使用eval

编辑: j = jQuery.parseJSON("{\"data\":\"DataGoesHere\",\"function\":\"{alert('test');}\"}");

eval(j.function)

答案 2 :(得分:0)

你可以这样做:

示例: http://jsfiddle.net/MvRru/

var jsonStr = '{"data" : "dataGoesHere","fn": "{alert(\'hello\');}"}';

var result = $.parseJSON( jsonStr );

result.fn = new Function( result.fn );

result.fn();