Насколько я могу судить, ваш сервер не поддерживает JSONP со своими запросами. Например
var getUrl = 'http://webapp.armadealo.com/home.json';
$.ajax({
url : getUrl,
type : 'GET',
dataType : 'jsonp text',
jsonp: 'jsonp',
crossDomain : true,
success: function() { console.log('Success!'); },
error: function() { console.log('Uh Oh!'); },
});
Это сказал бы SyntaxError: invalid label
. Возврат в том виде, в котором он есть, имеет неправильный формат JSONP. Чтобы он работал как JSONP, его нужно обернуть, потому что этого требует jQuery.
Итак, вы получаете правильный ответ, но это не то, что вам нужно. То, что вам нужно для вызовов JSONP, будет выглядеть так:
functionName({
"mall": {
"name": "South Shore Plaza",
"city": "Braintree",
"directory": "/assets/directory/0000/0094/show_floorplan.aspx",
"postal_code": "02184",
"street": "250 Granite St",
"lng": -71.023692,
"id": 147,
"phone": "(781) 843-8200",
"lat": 42.218688,
"state": "MA"
}
});
... поскольку то, что возвращается в настоящее время, является недействительным JavaScript (сам по себе, а это то, что он есть), и именно так работает JSONP, ответ на самом деле должен быть исполняемым JavaScript.
Вы можете получить ту же ошибку, просто вставив этот код прямо на свою страницу в <script>
блок.
Если вы сразу после встраивания данных, я рекомендую плагин, например jQuery-oembed, чтобы это сделать. Если вам нужны данные, вам понадобится что-то на вашем сервере для обработки JSON, а затем получить данные с вашего сервера после этого.
Например
Итак, допустим, мы хотели бы создать междоменный доступ с помощью jQuery. Вот как должен выглядеть вызов jQuery $.ajax
:
$.ajax({
dataType: 'jsonp',
data: 'id=test',
jsonp: 'jsonp_callback',
url: 'http://www.differentdomain.com/get_data.php',
success: function () {
// do something
},
});
Теперь на стороне сервера (в файле get_data.php) нам нужно получить имя обратного вызова и отправить данные в формате JSON, заключенные в функцию обратного вызова. Что-то вроде этого:
<?php
$jsonp_callback = $_GET['jsonp_callback'];
$data = array('1','2','3');
echo $jsonp_callback . '('.json_encode($data).');';
?>
JSONP можно использовать только в том случае, если сервер правильно встроил ответ в вызов функции JavaScript.
person
yesh
schedule
18.07.2012