我在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,其中包含一个我可以稍后调用的函数引用。
我希望这是有道理的。感谢您的时间和回复!
答案 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();