响应是JSON
Edge :有时会将响应属性值简单地插入DOM然后将其删除,有时会记录错误“SCRIPT5:访问被拒绝”(表示CORS),响应完全可以从调试器访问,请求显示在网络选项卡中< / p>
Chrome :响应空字符串,请求未显示在网络标签中,没有控制台消息
Firefox :在JSON.parse()中使用响应在控制台错误'响应'错误的JSON“'断点行上,因此在使用之前,请求未显示在网络选项卡,Firebug和集成
JS (仅限当前浏览器):
var session = "";
var request;
function checkLogin()
{
if(request.readyState > 3)
{
var response = JSON.parse(request.response);
if(verify(response)) // verify inserts argument property "error" in DOM on error via innerHTML on element
{
// do something
}
}
}
function login()
{
request = new XMLHttpRequest();
request.onreadystatechange = checkLogin;
request.open("GET", "authenticateUser.php?user=" + document.getElementById("user").value + "&credential="+md5(document.getElementById("password").value));
request.send();
}
来自网络标签的边缘请求:
Anforderungs-URL: http://*MYDOMAIN*/authenticateUser.php?user=df&credential=d41d8cd98f00b204e9800998ecf8427e
Anforderungsmethode: GET
Statuscode: 200 / OK
- Anforderungsheader
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: de-DE, de; q=0.8, en-US; q=0.5, en; q=0.3
Connection: Keep-Alive
Host: *MYDOMAIN*
Referer: http://*MYDOMAIN*/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586
- Antwortheader
Connection: Keep-Alive
Content-Length: 65
Content-Type: application/json
Date: Sat, 21 Nov 2015 07:42:17 GMT
Keep-Alive: timeout=15, max=94
Server: Apache
X-Powered-By: PHP/5.5.29
响应:
{"success":false,"error":"authentication failed or unauthorised"}
是什么让我的php响应可以在JS代码中使用(在Chrome和Firefox中),其属性值是否可以插入到DOM中?
答案 0 :(得分:0)
login()
是onsubmit
的处理程序。我没有return false
;因此用户和pw来自的表单 - 没有操作 - 提交到自己的页面并使浏览器重新加载页面:取消Chrome和Ff中的请求。只有Edge允许等页面JS处理来自前一个加载请求的repsonse - 直到它被插入。
我花了6个小时绕过JSONP和Charles然后列出来自Chrome的网络流量,其中页面本身在请求之后出现,因此让我知道页面重新加载&#34;并最终记住onsubmits处理程序取消提交返回false,否则提交导致加载的操作(或自我,如果没有)这是发生在这里。