Вызов $.ajax работает нормально в IE8 и не работает в браузерах Firefox и Chrome
Вот мой код
$.ajax(
{
type: "GET",
url: 'http://devserver:7995/stdpart/services/GetAllPartsWithFilter',
dataType: 'json',
data: jsonPartsData,
success: fnGetPartsData,
error: PartsLoadError
});
Этот код отлично работает в IE8, но не работает в браузерах Firefox и Chrome. Когда я проверяю объект XHR, он говорит, что код кода состояния равен 0. Я проверил все остальные вопросы, и ни один из них не помог мне определить проблему.
Дайте мне знать, если я делаю что-то не так в этом коде. Если у $.ajax есть проблемы с совместимостью, предложите что-то эквивалентное ему.
Обновление: мы нашли одно решение по адресу /questions/18237351/samyij-effektivnyij-sposob-proverit-tip-obekta/18237374#18237374
Он использует концепцию динамических сценариев. Мы сделали то же самое в нашем приложении, тогда, похоже, теперь все работает. Еще предстоит проанализировать полностью.
3 ответа
Это из-за той же политики происхождения. Вы не можете использовать 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;
затем получите доступ к местной службе, используя свой код.
для получения дополнительной информации, пожалуйста, перейдите по этой ссылке
Другим решением будет использование расширения jQuery ajaxTransport, которое использует XDomainRequest для IE8+.
Я думаю, что с вашим кодом что-то не так.
Пожалуйста, смотрите Чистый JavaScript Ajax звонки
Различные библиотеки реализуют API Ajax по-разному. Итак, в вашем случае это должно быть проблемой с версией jquery, которую вы используете.
Пожалуйста, попробуйте Pure JavaScript Ajax call и посмотрите, работает ли он во всех браузерах. Если это так, то есть проблема с jquery, на которую вы не хотите тратить время. Если это не так, то вы что-то упускаете.