Php javascript文件未加载或其他问题?
我在运行basic knockout.js脚本时遇到了一些问题,我不确定是文件加载不正确,还是另一个问题 本质上,我只是想得到一个教程的片段来在localhost上工作。我使用PHP调用函数“names”。它所要做的就是显示javascript文件中列出的名称。可以找到该教程 现在当页面加载时,我看到的是Php javascript文件未加载或其他问题?,php,javascript,jquery,knockout.js,Php,Javascript,Jquery,Knockout.js,我在运行basic knockout.js脚本时遇到了一些问题,我不确定是文件加载不正确,还是另一个问题 本质上,我只是想得到一个教程的片段来在localhost上工作。我使用PHP调用函数“names”。它所要做的就是显示javascript文件中列出的名称。可以找到该教程 现在当页面加载时,我看到的是 First name: Last name: 这里有我遗漏的东西吗?javascript文件和我的所有其他文件都在目录中。我还尝试了整个路径(在xampp中),但它仍然没有显示任何内容 标签
First name:
Last name:
这里有我遗漏的东西吗?javascript文件和我的所有其他文件都在目录中。我还尝试了整个路径(在xampp中),但它仍然没有显示任何内容 标签在解析时执行。运行applyBindings()
函数时,DOM尚未加载。您需要在加载DOM后(在脚本底部)运行它,或者在窗口.onload
或类似jQuery$(document.ready()
的东西中运行它
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
这在中有记录
最后,您还可以将
移动到有趣的位置,对我来说,它工作得很好:
HTML文件:
- 将脚本标记设置为底部
- 删除了PHP代码
因此,我们:
<p>First name: <strong data-bind="text: firstName"></strong></p>
<p>Last name: <strong data-bind="text: lastName"></strong></p>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://github.com/downloads/SteveSanderson/knockout/knockout-2.0.0.js"> </script>
<script src="name_test.js"></script>
当我使用PHP版本时,它也可以工作(当然,我在声明之后调用names()函数,我假设您在上面的示例中忘记了这一点?)
名字:
姓氏:
很抱歉,我不能再帮你了,但这对我有用。我不使用任何库,只使用脚本标记。不,这称为协议相对URL,是有效的。从/
开始,允许它根据父脚本的协议为http或https(或任何其他协议)工作如果您刚刚学习KO…为什么要使用PHP?我建议从平面HTML开始…@ahren这是一个更大文件的一部分。这将被集成到现有的API中。无论如何,这不会影响页眉中包含的文件,对吗?您是否尝试过将javascript移到页面底部?javascript文件只包含所显示的内容?我明白了,所以在关闭
标记之前,在页面底部包含
标记。@user1123815您尝试了哪一个?我在上面有3个选项。我没有注意到您已经将内容包装在PHP函数中。删除该函数,或者将其称为下面注释中的答案。如果失败,请始终在浏览器控制台打开的情况下开发JavaScript。任何错误都会出现在那里。我将ViewModel逻辑放在一个单独的文件中,但由于这个原因,HTML文件中始终有“ko.applyBindings”语句。我现在几乎肯定这与我的API加载文件的方式有关。谢谢你的帮助help@user1123815:那么我建议用“艰难的方式”调试它。从一个可以工作的简单HTML文件开始,逐渐增加复杂性,直到它崩溃。这就是我所能说的,我不知道更多关于API的信息,也不知道加载和处理这些文件的方式。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
// name_test.js
function AppViewModel() {
this.firstName = "first name here";
this.lastName = "last name here";
}
// Run after the window has loaded
window.onload = function() {
ko.applyBindings(new AppViewModel())
};
// Or if you are using jQuery
$(document).ready(function() {
ko.applyBindings(new AppViewModel())
});
<p>First name: <strong data-bind="text: firstName"></strong></p>
<p>Last name: <strong data-bind="text: lastName"></strong></p>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://github.com/downloads/SteveSanderson/knockout/knockout-2.0.0.js"> </script>
<script src="name_test.js"></script>
function AppViewModel() {
this.firstName = "first name here";
this.lastName = "last name here";
}
ko.applyBindings(new AppViewModel());
<?php
function names(){
?>
<p>First name: <strong data-bind="text: firstName"></strong></p>
<p>Last name: <strong data-bind="text: lastName"></strong></p>
<?php
}
names();
?>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://github.com/downloads/SteveSanderson/knockout/knockout-2.0.0.js"></script>
<script src="name_test.js"></script>