JavaScript仅适用于Chrome
下面的代码只适用于google chrome,如果我尝试使用任何其他浏览器,它都不会工作。我怀疑这与我发送给php的数据类型有关。然而,我并不完全确定 指向代码宿主位置的链接: 代码: PHPJavaScript仅适用于Chrome,javascript,php,google-chrome,browser,Javascript,Php,Google Chrome,Browser,下面的代码只适用于google chrome,如果我尝试使用任何其他浏览器,它都不会工作。我怀疑这与我发送给php的数据类型有关。然而,我并不完全确定 指向代码宿主位置的链接: 代码: PHP Javascript/HTML #CharacterLabel{右边距:110px} #ActionLabel{右边距:125px} #NUMOFDICE标签{右边距:60px} #SidesLabel{右边距:20px} 人物: 行动: 骰子数量: 边: 奖金: d3 d4 d6 d8 d10
Javascript/HTML
#CharacterLabel{右边距:110px}
#ActionLabel{右边距:125px}
#NUMOFDICE标签{右边距:60px}
#SidesLabel{右边距:20px}
人物:
行动:
骰子数量:
边:
奖金:
d3
d4
d6
d8
d10
d12
d20
d100
掷骰子
信息:
函数getXMLHttpRequestObject(){
var ajaxWork=null;
if(window.XMLHttpRequest){
ajaxWork=newXMLHttpRequest();
}
else if(window.ActiveXObject){
ajaxWork=newActiveXObject('MSXML2.XMLHTTP.3.0');
}
返回工作;
}
函数callAjax(ajaxWork)
{
ajaxWork.open('GET','http://coldrepublic.com/log.txt",对),;
ajaxWork.send(空)
}
函数写日志(toLog)
{
var data=new FormData();
数据。附加(“数据”,toLog);
var xhr=getXMLHttpRequestObject();
xhr.open('POST','http://coldrepublic.com/writeToLog.php",对),;
发送(数据);
}
函数myFunction(){
var ajaxWork=getXMLHttpRequestObject();
ajaxWork.onreadystatechange=函数(){
if(ajaxWork.readyState==4){
如果((ajaxWork.status>=200&&ajaxWork.status<300)
||(ajaxWork.status==304)){
document.getElementById('OutputBox')。value=ajaxWork.responseText;
}
否则{
document.getElementById('ErrorLog').innerHTML=“消息:错误!未正确读取文件”;
}
}
}
callAjax(ajaxWork);
}
函数rollDice(){
var character=document.getElementById(“CharacterInput”).value;
var action=document.getElementById(“ActionInput”).value;
var sides=parseInt(document.getElementById(“sides”).value);
var=”;
var toLog=“”;
var OutputBox=document.getElementById('OutputBox');
document.getElementById('ErrorLog')。innerHTML='Message:';
var bonusBlank=document.getElementById(“BonusInput”).value;
如果(字符==null | |字符==“”,操作==null | |操作==“”)
{
document.getElementById('ErrorLog')。innerHTML='Message:Error!必须为字符或操作输入值';
}
其他的
{
if(isInt(parseInt(document.getElementById(“NumDice”).value))和&isInt(parseInt(document.getElementById(“BonusInput”).value)))
{
var numDice=parseInt(document.getElementById(“numDice”).value);
var bonus=document.getElementById(“BonusInput”).value;
对于(i=0;i
我没有太多关注您的代码的功能,但我想我知道问题所在,如果我的解决方案是正确的,我将对您的代码添加一些其他想法
您的代码在Chrome中工作,因为Chrome比任何其他浏览器都快,并且它能够在调用页面重新加载之前执行xhr调用(实际上,这只是一个幸运,它在Chrome中工作,在某些机器上,结果可能不同,因此它可能在其他浏览器中工作,或者根本不工作)。要使其在任何其他浏览器中工作,您需要将回调添加到xhr调用中,并执行location.reload()代码>内部回调
不要忘记删除location.reload()代码>从滚动骰子中的其他位置
toLog = character + " " + action + " " + diceRolls + " Bonus: " + bonus + " Timestamp: " + dateTemp + "\n" ;
writeToLog(toLog);
}
编辑:
既然主要问题已经解决了,这里就没有其他的建议了
character==null
这些值来自输入,输入存储字符串,所以它们永远不会是空值,只有character==“”
应该足够了
你在这里干什么
if(character==null | | character==”,action==null | | action==”)
是错误的,您使用逗号运算符而不是ju
function writeToLog(toLog)
{
var data = new FormData();
data.append("data",toLog);
var xhr = getXMLHttpRequestObject();
xhr.open( 'POST', 'http://coldrepublic.com/writeToLog.php', true );
xhr.onload = function (e) {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
console.log('ok');
location.reload();
} else {
console.error('problem');
}
}
};
xhr.send(data);
}
toLog = character + " " + action + " " + diceRolls + " Bonus: " + bonus + " Timestamp: " + dateTemp + "\n" ;
writeToLog(toLog);
}
function isInt(value) {
return !isNaN(value) &&
parseInt(Number(value)) == value &&
!isNaN(parseInt(value, 10));
}
var numdice = document.getElementById("NumDice").value;
if (numdice == parseInt(numdice)...