Я думаю, ты прав. Похоже, вы столкнулись с ограничением межсайтовых скриптов.
Помните, вы вставляете свой код JavaScript в код целевого сайта. Таким образом, код работает с их страницы. Другими словами, вы пытаетесь сделать запрос AJAX со страницы (например, www.cnn.com) и получить данные с вашего сайта (другого домена).
Одно решение, которое я нашел в статье здесь . Это суть:
function loadScript(scriptURL) {
var scriptElem = document.createElement('SCRIPT');
scriptElem.setAttribute('language', 'JavaScript');
scriptElem.setAttribute('src', scriptURL);
document.body.appendChild(scriptElem);
}
loadScript(Root + '/apps/shop/toolbar/WishlistPopup.ashx');
Заставьте ваш серверный скрипт возвращать javascript, который будет оценен.
Второй, возможно, более предпочтительный вариант - использовать JSONP . По сути, ваш сервер будет отвечать данными JSON, обернутыми в именованную функцию. Вы сообщаете jQuery.ajax-запросу, что ожидаете ответа jsonp и каково будет имя возвращаемой функции. Это в значительной степени делает вышеперечисленное, но с немного большей безопасностью и синтаксическим сахаром, обернутым вокруг него.
Это будет версия PHP, но она должна быть понятной. Предположим, что все необходимые данные находятся в $ data, и имейте в виду, что вы можете поместить анонимные функции в структуру JSON, чтобы они были обработаны в обработчике успеха.
$json = json_encode($data);
echo $_GET['jsonp_callback'] . '(' . $json . ');';
JavaScript:
$.ajax({
dataType: 'jsonp',
jsonp: 'jsonp_callback',
url: Root + '/apps/shop/toolbar/WishlistPopup.ashx',
success: Response,
});
Чтобы правильно оценить, я украл и изменил этот пример JSONP из ответа Эндрю Мура для на этот вопрос