У меня есть веб-приложение, использующее текущую версию 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, поэтому, пожалуйста, будьте осторожны.
Спасибо Джеймс
У меня была похожая проблема. Подпись $ .getJSON (url, data, callback), и я тоже не передавал аргумент data. Попробуй это:
$.getJSON("http://localhost:17245/Service.svc/?format=json", {}, function(data) {alert(data.id);});
Некоторое время я сталкивался с проблемами при использовании веб-сервисов из jQuery, пока не нашел плагин ajaxdotnet .
Убедитесь, что вы обрабатываете ajaxError , иначе вы никогда не увидите ответ, если сервер вернет ошибку.
Ваш вызов getJSON, кажется, пропускает аргумент данных, как говорит palehorse. Я обычно пропускаю ноль для этого, когда мне это не нужно.
Если вы не можете заставить JQuery работать, попробуйте Fork . Посмотрите на Fork.Ajax и Fork.Json. Или используйте json2.js Дуга Крокфорда для анализа JSON с любой оболочкой XMLHttpRequest, которая вам нравится. Некоторое время назад я осматривал различные библиотеки Javascript, и по большей части они были слишком раздутыми и странными для меня; Вы должны изучить все маленькие причуды библиотек.
Я только столкнулся с этой проблемой и обнаружил, что основной причиной была запятая в JSON, которая возвращается.
Я видел подобные проблемы из-за ошибки в расширении Firebug. Попробуйте отключить его, если он у вас установлен.
Не уверен, было ли это когда-нибудь решено, но похоже на ограничения межсайтового скриптинга в Firefox. Он обрабатывает номера портов на сервере разработки ASP.NET (localhost: 0000) как разные домены. Попробуйте разместить как службу, так и веб-приложение на IIS, который не использует номера портов.