Nononono. Нет, просто, пожалуйста; нет. Это не JSONP, это javascript, который выполняет функцию с объектом в качестве параметра, который содержит больше javascript. Ааа!
Это JSON, потому что это всего лишь один объект:
{
'one': 1,
'two': 2,
'three':3
}
Это JSONP, потому что это всего лишь один объект, переданный через функцию; если вы перейдете на http://somesite/get_some_object?jsonp=grab
, сервер вернет:
grab({
'one': 1,
'two': 2,
'three':3
});
Это совсем не JSON. Это просто Javascript:
alert("hello");
А это? Javascript-код, хранящийся внутри строки (ой!) Внутри объекта, переданного функции, которая должна оценивать строку (но может или не может):
grab({"body": "alert(\"Hello!\");\n"});
Посмотрите на все эти точки с запятой и обратную косую черту! Я получаю кошмары от такого рода вещей. Это похоже на плохо написанный макрос на Лиспе, потому что он намного сложнее, чем должен (и должен!) Быть. Вместо этого определите функцию с именем grab
в своем коде:
function grab(message) {
alert(message.body);
}
, а затем используйте JSONP для возврата сервера:
grab({body: "Hello!"});
Не позволяйте серверу решать, как запускать вашу веб-страницу. Вместо этого пусть ваша веб-страница решает, как запустить веб-страницу, и просто заполняет пробелы сервером.
Что касается онлайн-службы, которая делает это? Я не знаю ни одного, извините