HTTP错误405当JS是在自己的文件,但不是当在HTML



我有一个小的文本审查web应用程序我工作。每当.js是在自己的文件,我点击"审查文本"按钮,我得到一个HTTP错误405,但如果我把js在HTML标签,它工作得很好。不太清楚为什么。

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document Censor</title>
<script src="/js/main.js"></script>
</head>
<body>
<h1>Text Censor</h1>
<p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Rerum enim reiciendis recusandae aliquid delectus
consectetur nobis. Sunt exercitationem iure dolores provident obcaecati aliquam totam. Molestiae cumque ducimus
aliquid. Deserunt, provident.</p>
<form name="redacted" method="post" action="">
<textarea id="input" name="text" rows="10" cols="60">
</textarea>
<br />
<input id="formSub" type="submit" value="Censor Text" />
</form>
</body>
</html>

JS:

var div = document.getElementById('formSub');
function censorWords(event) {
event.preventDefault();
var textContent = document.getElementById('input');
var redacted = ["boston", "red", "sox"];
console.log(textContent.value)
textContent.value = censored(textContent.value, redacted);
}
function censored(string, filters) {
console.log('in')
// "i" ignores case, "g" for global and "|" for OR match
var regexp = new RegExp(filters.join("|"), "gi");
return string.replace(regexp, function (match) {
//this is where the words are replaced with X
var censorship = '';
for (var i = 0; i < match.length; i++) {
censorship += 'x';
}
return censorship
})
}
div.addEventListener('click', censorWords)

我不确定,但我猜你需要移动你的<script src=""/>到正文末尾

因为javascript是在HTML本身之前加载的。

<body>
-
-
-
-
-
<script src="/js/main.js"></script>
</body>

错误405(method not allowed)显示,因为表单提交并使用post方法,但web服务器不允许张贴简单的html文件。

提交按钮提交表单,因为事件侦听器没有正确地与censorWords函数连接。

首先,如果你只想触发一些JavaScript来执行,你不需要表单,也不需要submit类型的按钮。删除窗体,使type=button按钮

第二,在javascript代码尝试访问文档的某些部分之前,您应该确保文档是完全加载的。看到美元(文档)。准备好不需要jQuery就可以实现的几种方法。要么等待文档完全加载,然后执行代码来连接其他事件。或使用scriptdefer属性标记推迟执行外部代码直到完全加载文档。

405错误意味着方法不允许

你的JS代码不做任何http请求,所以我的猜测是,当你有JS在一个单独的文件,它实际上并没有运行,所以当你按下按钮,它只是提交表单

当JS在一个单独的文件中,你仍然需要一个元素来包含你的JS文件在你的html文件

相关内容

  • 没有找到相关文章

最新更新