2012-02-29 1 views
2

Я работаю над CRM 2011, и у меня есть две кнопки с прикрепленным к ним javascript. Один из них вызывает вызов веб-службы в том же домене, а другая кнопка снова делает запрос на обновление ODATA в тот же домен. Поэтому у меня нет междоменных операций.Ошибка «Нет транспорта» в JQuery ajax crm 2011

Проблема, с которой я сталкиваюсь, заключается в том, что если я нажимаю одну кнопку, а затем нажимаю другую, на второй кнопке появляется сообщение «Нет транспорта». И после этого обе кнопки начинают бросать ту же ошибку и не работают. Но если я продолжаю нажимать одну и ту же кнопку снова и снова, она отлично работает для обеих кнопок. Только когда я переключаюсь между ними, я вижу ошибку.

Любая идея, что здесь происходит? Заранее спасибо!

+0

Я смотрел на несколько других должностей, и я обнаружил, что с помощью полностью уточненное URL может быть причиной проблемы. Мне удалось удалить полный URL-адрес для запроса одаты, и он работает отлично каждый раз, даже если я попробую его после вызова веб-службы. Но для вызова веб-службы я не могу удалить полностью квалифицированный URL-адрес, потому что у него есть определенный порт. Похоже, что это может быть какая-то проблема кэширования, потому что вызов веб-службы работает в первый раз, когда я пытаюсь это сделать, но если я сделаю одату, а затем снова попробую веб-службу, она выдает ошибку. Есть идеи? – user1081934

+0

Положительный дублированный вопрос http://stackoverflow.com/questions/5241088/jquery-call-to-webservice-returns-no-transport-error – Iain

+0

@lain: Мой сценарий не включает в себя какую-либо операцию кросс-домена, поэтому он отличается от вопрос по указанной вами ссылке – user1081934

ответ

0

Это может быть или не быть полезным для вас, но я столкнулся с аналогичной проблемой с сервисом oData. Если я подключился к CRM в нашей сети, используя IP-адрес сервера, тогда мои вызовы oData столкнулись с ошибкой «Нет транспорта». Однако при подключении через имя, зарегистрированное в DNS, у меня не было таких проблем с транспортом. Таким образом, он был связан с тем, как настроено доверие в корпоративной сети.

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

+0

Спасибо за ваш ответ. Моя проблема, похоже, не то, что вы испытали. Поскольку ошибка «Нет транспорта» появляется, когда я делаю запрос odata, а затем выполняю вызов веб-службы, я попытался открыть Fiddler, чтобы узнать, что происходит, и обнаружил, что на самом деле запрос не отправляется на веб-службу, Нет транспорта ". Таким образом, похоже, что браузер IE может вызывать ошибку. Вы видели такой сценарий, прежде чем запрос вообще не появится в Fiddler? – user1081934

+0

Чтобы уточнить, вызов веб-службы относится к моей пользовательской веб-службе, а запрос odata - к службе CRM 2011 OrganizationData. Я попытался использовать $ .ajaxSetup ({ cache: false }); , а также кеш: false в запросе $ .ajax(). Оба, похоже, не имеют никакого значения. Я все еще вижу ту же транспортную ошибку. У кого-нибудь есть идеи по этому поводу? – user1081934

+0

@ user1081934 Разве ваша служба развернута на том же сервере, что и экземпляр Dynamics? –

1

Следующий блог мне помог. Показывает способ создания URL-адреса сервера, вместо того, чтобы использовать устаревший Xrm.Page.context.getServerUrl(). Также ссылки на сообщение о коде поддержки jQuery для перекрестного браузера (jQuery.support.cors = true;).

http://mysoftwarenotes.wordpress.com/2013/01/07/crm-2011-ajax-call-using-jquery-returns-no-transport-error/