jQuery.ParseJSON () для включения ссылки на функцию - PullRequest
2 голосов
/ 26 января 2011

У меня есть функция обратного вызова в приложении ASP.NET Web Forms, в которую я пытаюсь вернуть какой-нибудь удобный JSON, чтобы функция javascript управляла данными.Я могу отправить строку JSON, которая содержит все мои данные, но сейчас я пытаюсь получить следующую структуру:

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

jQuery.parseJSON отлично работает для простого случая, когда строка являетсявозвращается так:

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

но как только вы попытаетесь сделать что-то подобное

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

jQuery выдает исключение.Мне интересно, возможно ли создать строку, чтобы jQuery мог анализировать в JSON, который будет включать ссылку на функцию, которую я могу вызвать позже.

Надеюсь, это имеет смысл.Спасибо за ваше время и ответы!

Ответы [ 3 ]

4 голосов
/ 26 января 2011

Это недопустимый JSON.
Он отклонен jQuery по соображениям безопасности, чтобы точно предотвратить то, что вы пытаетесь сделать.

Вместо этого вы можете просто позвонить eval, чтобы интерпретироватьэто как литерал Javascript.
Обратите внимание, что вам нужно заключить его в скобки, чтобы убедиться, что он анализируется как выражение, а не как блок.

0 голосов
/ 26 января 2011

Вы можете сделать это так:

Пример: http://jsfiddle.net/MvRru/

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

var result = $.parseJSON( jsonStr );

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

result.fn();
0 голосов
/ 26 января 2011

Вы можете настроить его как действительный JSON и использовать eval.

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

eval(j.function)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...