Вы CANNOT сделать запрос междоменная (GET/POST/и т.д.) с XMLHttpRequest (ака AJAX).
Что вы можете сделать, когда сервер поддерживает его, сделать запрос JSONP. Запрос JSONP работает следующим образом:
- JQuery создает глобально доступную функцию из функции обратного вызова, которую Вы предоставляете в качестве аргумента
- Вместо использования XMLHttpRequest (AJAX), чтобы сделать запрос HTTP, JQuery динамически вставляет SCRIPT тег в DOM
- Пульт SRC тега сценария является запрос URL, к которому вы пытаетесь общаться
- JQuery добавляет обратный вызов параметров в строку запроса, как так: example.com/someurl.js?callback=someDynamicallyGeneratedMethodName
- Именно тогда к серверу для возврата JavaScript, что ваш клиент может использовать, передавая результат JSON как аргумент someDynamicallyGeneratedMethodName
Если у вас нет контроля над сервером, который вы отправляете сообщение, то вам не повезло, JSONP выиграл «Тебе хорошо. Независимо от того, что возвращает сервер, он будет находиться в теге SCRIPT и, скорее всего, выдает ошибку, если он не отформатирован правильно.
Для получения дополнительной информации, я предлагаю вам посмотреть на базовую функцию $ .ajax вместо ярлыков. (В документации jQuery под Ajax. Извините, я не могу опубликовать дополнительные ссылки)
Опять же, если у вас нет контроля над сервером, на который вы отправляете сообщения, возможно, вам захочется заглянуть в прокси-сервер, если это возможно. В противном случае IFRAME может быть вашим единственным другим вариантом. Существует также способ выполнить это с помощью SWF (flash) объекта. Я не пробовал ни одного, но они обходные пути к ограничениям объекта XMLHttpRequest.
Надеюсь, что смогу помочь!
+1. Отличная почта, и добро пожаловать в СО! – aolde
Спасибо за объяснение. После этого это стало намного яснее, чем час Googling. У меня есть доступ к серверу, который я отправляю, так что все хорошо. –
Err, как этот комментарий относится к теме? Это не распространяется на POST, который специально спрашивает OT! – HRJ