【发布时间】:2012-11-20 02:06:42
【问题描述】:
function regist(nome,pwd){
URL+="register?nick=" + nome + "&key=" + pwd;
var req = new XMLHttpRequest();
req.open("get", URL, true);//Assincrono
req.onreadystatechange = function(){
if (req.readyState != 4) {
return;
}
else if (req.status != 200) {// Tratamento de erro (e.g., mostrar mensagem de erro)
return;
}
var data=JSON.parse(req.responseText);
alert(data);
if(data.error==null || data.error==undefined){
document.getElementById("register").innerHTML="Registo Bem Sucedido";
}
else{
document.getElementById("register").innerHTML="Utilizador já registado - Password errada";
}
};
req.send();
};
我无法访问 var 数据.. 可能是因为 "*req.onreadystatechange = function(){-----" 发生了什么?我的数据警报不起作用,它没有被读取..你能帮帮我吗?>正确定义了 URL,别担心 ;)
我对同源策略问题一无所知... GET 中使用的 URL 是:dcc.fc.up.pt:8080/TabuWeb/rest/register?nick=ola&key=mundo 我的页面网址:file:///home/carlos/public_html/TabuWeb2/WebContent/index.html?nick=ola&key=mundo
同源策略有什么问题吗?这就是为什么我的 req.status=0 和 firebug 指向 req.send()?
谢谢
【问题讨论】:
-
alert(data)显示什么内容?还是在它到达那里之前抛出异常?具体来说,运行此代码时会发生什么? -
在您的
return;s 所在的位置使用return console.log(req.readyState, req.status);,而不是alert,您将能够遵循请求的每一步。 (您可能会发现它永远不会达到 200 OK)。您还说URL定义正确,但我会指出window.URL存在,所以如果您使用+=,您最终会得到奇怪的结果。 -
好吧,我在发出警报后得到了 0(req.status):那么,为什么 req.status=0?我发现了另一件事,我启动了一个 console.log(req),然后我得到了指向 server.js(第 52 行)(req.send(null)) 的“GET:”URL“(LOADING)”。如果我“重新发送”,则 FIREBUG 会显示响应。好吧,我在执行 alert(req.status) 后得到了这个: else if (req.status != 200){ alert(req.status) --- --->>>>>0 return;} 那么,为什么req.status=0?我发现了另一件事,我启动了一个 console.log(req),然后我得到了指向 server.js(第 52 行)(req.send(null)) 的“GET:”URL“(LOADING)”。如果我“重新发送”,则 FIREBUG 会显示响应..
-
你没有尝试跨域,因此遇到了同源策略,是吗?
-
我对同源问题一无所知... GET 中使用的 URL 是:dcc.fc.up.pt:8080/TabuWeb/rest/register?nick=ola&key=mundo 我的页面 URL 是:file:///home/carlos/public_html/TabuWeb2/WebContent /index.html?nick=ola&key=mundo 同源政策有什么问题吗?谢谢
标签: javascript xml get xmlhttprequest onreadystatechange