首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当JS在自己的文件中时,HTTP错误405,而在HTML中则不是

当JS在自己的文件中时,HTTP错误405,而在HTML中则不是
EN

Stack Overflow用户
提问于 2022-06-28 11:51:52
回答 3查看 53关注 0票数 0

我有一个小的文本审查网络应用程序我正在工作。每当.js位于自己的文件中,单击“审查文本”按钮时,我就会得到一个HTTP 405,但是如果我将js放在HTML中,fine.Not就会太确定原因了。

HTML:

代码语言:javascript
复制
<!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>

联署材料:

代码语言:javascript
复制
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)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-06-28 11:58:58

我不确定,但我猜你需要把你的<script src=""/>移到身体的末端。

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

代码语言:javascript
复制
<body>
-
-
-
-
-
<script src="/js/main.js"></script>
</body>
票数 1
EN

Stack Overflow用户

发布于 2022-06-28 12:00:22

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

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

首先,如果只需要触发一些JavaScript来执行,则不需要表单,也不需要类型为submit的按钮。删除表单并制作type=button按钮。

其次,在javascript代码试图访问文档的部分之前,您应该确保文档已经完全加载。有关如何实现该目标的几种方法,请参见$(document).ready equivalent without jQuery。要么等待完整加载docment,然后执行代码来连接其他事件。或者使用script标记上的script属性将外部代码的执行推迟到文档完全加载。

票数 0
EN

Stack Overflow用户

发布于 2022-06-28 12:01:14

405错误均值方法不允许

您的JS代码没有发出任何http请求,所以我猜当您将JS放在单独的文件中时,它实际上根本没有运行,所以当您按下按钮时,它只是提交表单。

当JS位于单独的文件中时,仍然需要一个元素将JS文件包含在html文件中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72785910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档