Как Франтишек говорит , межсайтовый ajax (getJSON
- это ajax under-cover) ограничен Одинаковой политикой происхождения .
У вас есть много вариантов:
- Как говорит Франтишек, вы можете использовать JSON-P , если соответствующий сервер его поддерживает.
- Если целевой сервер поддерживает CORS и браузер, который использует посетитель, поддерживает его (последние версии), он будет работать (за исключением того, что для версий IE, которые поддерживают CORS - 8 и 9 - требуется). специальная обработка, а не просто работа, как в Firefox и Chrome).
- Вы можете использовать YQL в качестве прокси .
(Это CW, потому что на самом деле это просто большое дополнение к ответу Франтишека. Не очень удобно добавлять все это к этому ответу, хотя в теории, конечно, это и есть StackOverflow, совместно отвечающий на вопросы.)
Отдельно, к вашему сведению, JSON, который вы цитировали:
({
"items": [
{
"views": "20"
}
]
})
... недействительно, JSON не имеет оператора скобок. Это должно быть:
{
"items": [
{
"views": "20"
}
]
}
Причина, по которой вы иногда видите круглые скобки рядом с текстом JSON, заключается в том, что при оценке JSON иногда люди используют синтаксический анализатор JavaScript для анализа JSON (поскольку JSON является подмножеством буквенной нотации объектов JavaScript):
var result = eval("(" + jsonString + ")");
Они ставят круглые скобки, чтобы гарантировать, что синтаксический анализатор оценивает содержимое jsonString
, где ожидается выражение . Но скобки не являются частью JSON, и правильный синтаксический анализатор JSON потерпит неудачу, если вы используете JSON, который вы указали. (В отношении этой техники eval
: Только используйте ее, если вы знаете, что источник JSON заслуживает доверия [ваш собственный сервер и т. Д.]; В противном случае лучше всего использовать реальный анализатор JSON для защиты от внедрения скрипта атак, скобки не являются удаленной проекцией против них. Вы можете найти три парсера JSON - один, который опирается на eval
, но сначала делает несколько проверок, и два, которые вообще не используют eval
- на страница GitHub Дугласа Крокфорда , изобретатель JSON.)