Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php javascript文件未加载或其他问题?_Php_Javascript_Jquery_Knockout.js - Fatal编程技术网

Php 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中),但它仍然没有显示任何内容 标签

我在运行basic knockout.js脚本时遇到了一些问题,我不确定是文件加载不正确,还是另一个问题

本质上,我只是想得到一个教程的片段来在localhost上工作。我使用PHP调用函数“names”。它所要做的就是显示javascript文件中列出的名称。可以找到该教程

现在当页面加载时,我看到的是

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>