Я пытаюсь загрузить JSONP с моего локального хоста. У меня есть PHP webapp, который возвращает JSON с обратным вызовом, если он предоставляется. Возвращаемый JSON на 100% действителен (проверен с помощью JSON Validator). URL-адрес выглядит так:
http://localhost/backstage/public/data/acties?callback=?
Теперь, когда я пытаюсь загрузить эти данные с помощью jQuery AJAX, он дает мне предупреждение с сообщением «error», подразумевая, что загрузка не удалась.
var url = "http://localhost/backstage/public/data/acties"; $("#debug").click(function() { console.log("getting data from " + url); $.ajax({ type:'GET', url: url, dataType:'jsonp', success: function(data){ alert('loaded'); }, error: function(data){ alert('error'); } }); });
Однако, когда я перехожу на вкладку сети, я вижу, что был сделан запрос:
http://localhost/backstage/public/data/acties?callback=jQuery19008035339566413313_1358941083680&_=1358941083681
И содержимое в этом файле является действительным JSON (опять же, я проверил его с помощью JSON Validator). Данные, похоже, не заканчиваются моей переменной данных в JavaScript.
Для справки, это мой код PHP (Zend 1.12):
public function actiesAction() { $data = new Application_Model_DbTable_Actie(); $data = $data->fetchAll(); $callback = htmlspecialchars($_GET["callback"]); $data = Zend_Json::encode($data); echo $callback.'('.$data.');'; }
и это JSONP, который вы получаете, когда идете в
http://localhost/backstage/public/data/acties?callback=?
-> http://pastebin.com/tazcUQAW
Кто-нибудь знает, как это исправить?