gpt4 book ai didi

来自外部文件的 Javascript 未加载

转载 作者:行者123 更新时间:2023-11-27 22:43:08 26 4
gpt4 key购买 nike

我有一个 Javascript 问题困扰了我很长一段时间。我有一个名为 search.js 的外部文件,它与它加载到的 .html 文件位于同一文件夹中。

我在 HTML 中用来加载 javascript 文件的代码是:

<script type="text/javascript" src="search.js"></script>

从我阅读过的所有网站中,我找不到这里的代码问题。

此外,我知道 javascript 文件中的语法必须正确才能正常工作,所以这是我来自 search.js 的 Javascript 代码:

$(document).ready(function(){
$('#searchForm').submit(function(){
var lookfor = $("#billSearched").val();
alert(lookfor);
var a = $(this).attr('action');
alert(a);
a = a.replace("__search_term__",lookfor);
alert(a);
window.location.href = a;
return false;
});
});

我在另一个项目中运行了这段代码,它运行得很好,我所做的只是字段的名称,即 billSearched。

如果有任何其他原因导致我的页面无法加载 Javascript,请留言或评论。

提前致谢!

编辑

完整的html代码:

<html>
<head>
<title>Bills</title>
<script type="text/javascript" src="/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="/search.js"></script>
<link rel="stylesheet" href="style.css">
</head>
<body bgcolor="#0066CC" color="FFFFFF">
<table>
<tr>
<td style="color:white"><b>Products</b></td>
<td style="color:white">Price</td>
<form method="POST" id="searchForm" action="{% url ps.views.search searchTerm='__search_term__' %}">
{% csrf_token %}
<td><input type="text" id="billSearched"></td>
<td><input type="submit" value="Search"></td>
</form>
</tr>
{% for x in products %}
<tr>
<td style="color:white">{{ x.name }}</td>
<td style="color:white">{{ x.price }}</td>
</tr>
{% endfor %}
</tr>
</table>
</body>

最佳答案

根据标签和您的模板代码,我了解到您正在使用 Django。要了解您的问题,您必须了解 Django View 相对于您的浏览器是如何工作的,以及当您的浏览器发出对给定 url 的请求时会发生什么。

Django 端发生了什么:

当您请求一个 url 时,您的基本 urls.py 文件将被搜索以查找与您的 url 匹配的模式。如果遇到模式,则调用相应的 View
view 将执行其逻辑,并将使用 template 将其响应呈现为 html

从浏览器的 Angular 来看会发生什么

浏览器请求了一个 url,并收到了一个响应,它不知道调用了一个 View ,并且它在某处获取了一个模板。

这对你意味着什么

您的 search.js 文件位于您的模板旁边这一事实完全不相关,因为您的浏览器从未从该目录请求任何文件,是 view 在获取其 template 时执行的操作。

实际上,您的浏览器对 search.js 的请求将由您的网络服务器转发到 Django,并且(很可能)会导致 404 错误,除非 search.js 解析为您的 urls.py 中的 View 。

如何使用它来解决您的问题

您需要从浏览器可以访问的目录提供您的 search.js 文件。通常,这是通过三个步骤完成的:

  1. 配置您的网络服务器,以便它自己提供任何以 /static/ 开头的路径(不知何故,这意味着不将请求转发到 Django)。
    在 Apache 中,您将使用以下规则:Alias/static//YOUR/STATIC/DIRECTORY/

  2. 配置 Djangosettings.py 以使用 /YOUR/STATIC/DIR 作为 STATIC_ROOT/static/ 作为 STATIC_URL

  3. 将您的 search.js 文件放入您的 /YOUR/STATIC/DIR/

  4. 使用 src="/static/search.js 在您的 html 模板中引用您的文件。

最后一件事:如果您使用的是开发服务器,您可能需要确保您的 STATIC_URL 以服务器的完整路径开头,包括端口。 (或者您可能对浏览器安全策略有疑问)。

一些补充:

您应该使用模板标签,这样您就不必在模板中编写 /static/
您应该使用 manage.py collectstatic 自动将静态文件放入您的静态目录。

最重要的是,您应该研究 Django 的 MVC(或 MTV)模型是关于什么的

关于来自外部文件的 Javascript 未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9736607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com