Вызов $ .ajax работает нормально в IE8 и не работает в браузерах Firefox и Chrome - PullRequest
4 голосов
/ 02 января 2012

вот мой код

$.ajax(
{
    type: "GET", 
    url: 'http://devserver:7995/stdpart/services/GetAllPartsWithFilter',
    dataType: 'json',
    data: jsonPartsData,
    success: fnGetPartsData, 
    error: PartsLoadError  
});

Этот код отлично работает в IE8, но не работает в браузерах Firefox и Chrome. Когда я проверяю объект XHR, он говорит, что код кода состояния равен 0. Я проверил все остальные вопросы, и ни один из них не помог мне определить проблему.

Дайте мне знать, если я что-то не так делаю в этом коде. Если у $ .ajax есть проблемы с совместимостью, предложите что-то эквивалентное ему.

Обновление: Мы нашли одно решение в http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html

Используется концепция Динамические сценарии . Мы сделали то же самое в нашем приложении, тогда, похоже, теперь все работает. Еще предстоит проанализировать полностью.

Ответы [ 3 ]

6 голосов
/ 02 января 2012

это из-за Одинаковой политики происхождения .Вы не можете использовать ajax для вызова внешних сайтов.если вы действительно хотите использовать, вы должны использовать JSONP .Или вы можете использовать прокси сервер для этого.значит, вызвать внешний сайт на стороне сервера и сделать ajax-вызов для этого веб-сервиса.


ОБНОВЛЕНИЕ:

создать веб-службу вна вашем сайте и в веб-методе введите следующий код

string proxyURL = "http://devserver:7995/stdpart/services/GetAllPartsWithFilter";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(proxyURL);
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

if (response.StatusCode.ToString().ToLower() == "ok")
{
    Stream content = response.GetResponseStream();
    StreamReader contentReader = new StreamReader(content);         
    return contentReader.ReadToEnd();
}
return string.Empty;

, затем получите доступ к местной службе, используя ваш код.

для получения дополнительной информации, пожалуйста, перейдите по этой ссылке

3 голосов
/ 18 ноября 2013

Другим решением будет использование jQuery ajaxTransport расширение , которое использует XDomainRequest для IE8 +.

0 голосов
/ 02 января 2012

Я думаю, что с вашим кодом что-то не так.

Пожалуйста, смотрите Чистый JavaScript Ajax вызывает

Различные библиотеки реализуют API Ajax по-разному. Итак, в вашем случае это может быть проблема с версией jquery, которую вы используете.

Пожалуйста, попробуйте Pure JavaScript Ajax call и посмотрите, работает ли он во всех браузерах. Если это так, то есть проблема с jquery, на которую вы не хотите тратить время. Если это не так, то вы что-то упускаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...