AJAX-вызов работает на локальной машине, а не на хосте - PullRequest
0 голосов
/ 23 апреля 2010

Что может помешать работе вызова AJAX на хост-сервере, когда он отлично работает на локальном хосте? Я попытался вернуть ошибку из вызова AJAX, но все, что я получаю, это «undefined». Я не думаю, что вызывается реальный метод страницы, так как в моем журнале нет никакой информации (и я явно добавил вызов). Я не могу воспроизвести проблему на своем локальном компьютере, поэтому кто-нибудь знает возможные области, в которые мне следует обратиться?

Спасибо

Ответы [ 2 ]

0 голосов
/ 23 апреля 2010

Мне удалось это исправить.Возникла проблема с запуском IIS7 в интегрированном режиме.Я переместил все свои модули из и в (также в разделе)

Надеюсь, что это поможет кому-то еще.

Подробнее

0 голосов
/ 23 апреля 2010

Какой URL-адрес находится в вашем браузере, и какой URL-адрес используется для вызова Ajax? Браузеры имеют ограничения безопасности, которые не разрешают междоменные вызовы AJAX. Например, если я загружаю локальный файл:

http://localhost:20080/myCustomPage.html

и на этой странице я делаю ajax вызов

http://search.twitter.com/search?q=test

Я бы получил предупреждение от браузера. В зависимости от вашего браузера это может проявляться в значке предупреждения в нижнем углу (IE) или в ошибке в журнале javascript (firefox).

Существует способ обойти это в ОДНОМ конкретном случае. В этом случае любой запрос GET. Чтобы сделать это вместо вызова «ajax», вы включаете тег. Этот тег сценария будет затем прочитан и загружен. Подвох в том, что теперь вызов должен включать метод «обратного вызова», который вы можете реализовать на своей стороне, который вызывается с результатом вызова.

Так что вместо ответа типа:

{
    "first_name": "peter",
    "last_name": "parker"
}

вам нужно будет вернуть

myCallBackFunction({
    "first_name": "peter",
    "last_name": "parker"
});

В этом примере используется JSON, но вы можете легко использовать XML, HTML или любой другой формат результата, пока вызывается функция.

myCallbackFunction("INSERT RESPONSE TEXT HERE")

Этот метод обычно называется JSONP и, к счастью, реализован в общих библиотеках javascript, таких как jquery, с точки зрения клиента. Если вы управляете серверной стороной, вам нужно жестко закодировать оболочку callBackFunction или предоставить параметр, который позволяет клиенту установить его. И, к сожалению, если у вас нет библиотеки, вы ничего не сможете сделать, если владелец сервиса уже не предоставит эту функцию. К счастью, большинство служб Web 2.0, с которыми вы будете заниматься такими вещами, уже реализуют эту функцию.

...