Ajax请求不同的主机 [英] ajax request to different host
问题描述
我在我的网页下面的JavaScript:
VAR XHR =新XMLHtt prequest();
xhr.open(GET,http://www.google.com,真正的);
xhr.onreadystatechange =功能(){
如果(xhr.readyState == 4){
警报('RESP收到,状态:+ xhr.status +,responseText的:'+ xhr.responseText);
}
};
xhr.send(空);
这执行和完成W / A的readyState 4,0状态,空和responseXML-。我知道,它实际上是将请求发送B / CI试图发送XHR到服务器我的机器上,并且服务器实际上确实回应。为什么我没有得到的responseText的什么?它有事可做瓦特/事实XHR会到不同的服务器?
当我打开JS调试器,键入XHR检查我得到这个对象:
XMLHtt prequest
DONE:4
HEADERS_RECEIVED:2
LOADING:3
OPENED:1
UNSENT:0
中止:函数abort(){
的addEventListener:函数调用addEventListener(){
则dispatchEvent:功能则dispatchEvent(){
getAllResponseHeaders:功能getAllResponseHeaders(){
getResponseHeader:功能getResponseHeader(){
onabort:空
onError的:空
onload事件:空
onloadstart:空
onprogress:空
的onreadystatechange:函数(){
开放式:开放式的功能(){
overrideMimeType:功能overrideMimeType(){
readyState的:4
removeEventListener:功能removeEventListener(){
responseText的:
responseXML的:空
发送:函数的send(){
setRequestHeader:功能setRequestHeader(){
状态:0
状态文本:
上传:XMLHtt prequestUpload
withCredentials:假
它有事情做瓦特/ 事实XHR是要一 不同的服务器?
是的,你无法通过AJAX请求发送到另一台服务器上。然而,您可以发送从服务器端的您的要求。因此,你需要实现以下工作流程: 您的网页 - >你的服务器 - >第三方服务器 - >你的服务器 - >您的网页,其中 - >表示发送数据
i have the following javascript in my webpage:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.google.com', true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
alert('resp received, status:' + xhr.status + ', responseText: ' + xhr.responseText);
}
};
xhr.send(null);
this executes and finishes w/ a readyState of 4, status of 0, and empty responseText and responseXML. i know that it is actually sending the request b/c i tried sending the xhr to a server on my machine, and the server does in fact respond. why am i not getting anything in the responseText? does it have something to do w/ the fact that the xhr is going to a different server?
when i open up the js debugger and type 'xhr' to inspect the object i get this:
XMLHttpRequest
DONE: 4
HEADERS_RECEIVED: 2
LOADING: 3
OPENED: 1
UNSENT: 0
abort: function abort() {
addEventListener: function addEventListener() {
dispatchEvent: function dispatchEvent() {
getAllResponseHeaders: function getAllResponseHeaders() {
getResponseHeader: function getResponseHeader() {
onabort: null
onerror: null
onload: null
onloadstart: null
onprogress: null
onreadystatechange: function () {
open: function open() {
overrideMimeType: function overrideMimeType() {
readyState: 4
removeEventListener: function removeEventListener() {
responseText: ""
responseXML: null
send: function send() {
setRequestHeader: function setRequestHeader() {
status: 0
statusText: ""
upload: XMLHttpRequestUpload
withCredentials: false
does it have something to do w/ the fact that the xhr is going to a different server?
Yep, you cannot send requests to another servers via AJAX. Whereas, you can send your requests from the server-side. Thus you'll need to implement following workflow: Your page -> Your server -> Third party server -> Your server -> Your page , where "->" means sending data.
这篇关于Ajax请求不同的主机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!