вызов getJSON работает на IE 7, но не на Firefox 3

У меня есть веб-приложение, использующее текущую версию JQuery, которому необходимо получить некоторые объекты JSON из веб-службы REST. Я использую следующий вызов $ .getJSON:

$ .getJSON (" http: // localhost: 17245 / Service.svc /? format = json ", function (data) {alert (data.id);});

Этот вызов прекрасно работает в IE7, и я могу без проблем вызвать службу в Fiddler. Я прошел через это в Firebug, но когда Firefox добирается до этой строки, выполнение javascript просто «умирает» без ошибок, без обратного вызова, без ничего.

Я также использовал $ .ajax и имею ту же проблему; отлично работает в IE, ничего в Firefox.

У кого-нибудь есть идеи? Я ОЧЕНЬ новичок в JQuery, поэтому, пожалуйста, будьте осторожны.

Спасибо Джеймс

10.12.2008 21:53:43
redsquare 10.12.2008 22:56:42
Можете ли вы показать реальный JSON Retunred, и я могу придумать это локально
redsquare 10.12.2008 23:24:08
также вы видите запрос, отправляемый в консоль firebug winow - или на вкладке net?
redsquare 10.12.2008 23:24:39
Да, проверьте окно консоли firebug для деталей запроса.
Jarrod Dixon♦ 11.01.2009 05:58:17
Браузеры по-разному реагируют на неправильные ответы JSON. Если у вас запаздывающие запятые, IE часто не работает, а с Firefox все в порядке.
Jon Winstanley 15.12.2009 14:06:00
7 ОТВЕТОВ
РЕШЕНИЕ

У меня была похожая проблема. Подпись $ .getJSON (url, data, callback), и я тоже не передавал аргумент data. Попробуй это:

$.getJSON("http://localhost:17245/Service.svc/?format=json", {}, function(data) {alert(data.id);});
4
10.12.2008 23:46:15

Некоторое время я сталкивался с проблемами при использовании веб-сервисов из jQuery, пока не нашел плагин ajaxdotnet .

0
11.12.2008 04:00:12

Убедитесь, что вы обрабатываете ajaxError , иначе вы никогда не увидите ответ, если сервер вернет ошибку.

Ваш вызов getJSON, кажется, пропускает аргумент данных, как говорит palehorse. Я обычно пропускаю ноль для этого, когда мне это не нужно.

0
11.12.2008 14:11:20
Если вы используете firebug, должна появиться ошибка. Затем панель Net можно использовать для просмотра возвращенных заголовков.
Soviut 11.01.2009 07:08:14

Если вы не можете заставить JQuery работать, попробуйте Fork . Посмотрите на Fork.Ajax и Fork.Json. Или используйте json2.js Дуга Крокфорда для анализа JSON с любой оболочкой XMLHttpRequest, которая вам нравится. Некоторое время назад я осматривал различные библиотеки Javascript, и по большей части они были слишком раздутыми и странными для меня; Вы должны изучить все маленькие причуды библиотек.

0
23.12.2008 22:55:47

Я только столкнулся с этой проблемой и обнаружил, что основной причиной была запятая в JSON, которая возвращается.

0
11.01.2009 05:49:21

Я видел подобные проблемы из-за ошибки в расширении Firebug. Попробуйте отключить его, если он у вас установлен.

0
11.01.2009 06:10:59

Не уверен, было ли это когда-нибудь решено, но похоже на ограничения межсайтового скриптинга в Firefox. Он обрабатывает номера портов на сервере разработки ASP.NET (localhost: 0000) как разные домены. Попробуйте разместить как службу, так и веб-приложение на IIS, который не использует номера портов.

1
20.10.2009 20:37:34
У меня та же проблема, и я думаю, что вы правы. На панели Firebug Net он не выполняет GET, а выполняет ОПЦИИ. Поэтому я думаю, что мне нужно выяснить, как работает CORS (Cross Origin Resource Sharing).
Matt Frear 3.02.2010 03:03:22