Javascript 未捕获类型错误:无法读取属性';fromJSON';未定义的
我试图在ajax调用从以下页面返回后显示菜单数据:Javascript 未捕获类型错误:无法读取属性';fromJSON';未定义的,javascript,jquery,ajax,knockout.js,Javascript,Jquery,Ajax,Knockout.js,我试图在ajax调用从以下页面返回后显示菜单数据: <head> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css"> <script type='text/javascript' src="https://cdnjs.clo
<head>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css">
<script type='text/javascript' src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.1/knockout-min.js"></script>
<script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js'></script>
<!-- <script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/js/bootstrap.min.js'></script>
<script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.js'></script> -->
</head>
<body>
<h1>page loaded</h1>
<div data-bind="foreach: menu">
<!-- ko foreach: items -->
<span data-bind="$data.name"></span>
<!-- /ko -->
</div>
</body>
<script>
function OrderPageViewModel() {
var self = this;
// self.menu_loaded_success_callback = function(data) {
// var retrieved_menu = data["menu"];
// self.menu = ko.observable(retrieved_menu);
// console.log(retrieved_menu)
// alert(data);
// }
//
// self.get_data(menu_url).done(self.menu_loaded_success_callback);
}
var menu_url = "menu/get-menu";
get_menu_data = function(url_ending){
console.log("running get_data");
var URL = "/api/&/".replace("&", url_ending);
console.log("URL: ", URL);
return $.ajax({
dataType: "json",
url: URL,
// type: "GET",
});
}
get_menu_data(menu_url).done(function(data){
var vm = new OrderPageViewModel();
console.log(data);
vm = ko.mapping.fromJSON(data);
ko.applyBindings(vm);
}).fail(function(){
alert("failed");
});
// ko.applyBindings(new OrderPageViewModel());
</script>
页面加载
函数OrderPageViewModel(){
var self=这个;
//self.menu\u loaded\u success\u callback=函数(数据){
//检索的var_menu=数据[“menu”];
//self.menu=ko.observable(检索到的菜单);
//console.log(检索的菜单)
//警报(数据);
// }
//
//self.get\u data(menu\u url).done(self.menu\u loaded\u success\u callback);
}
var menu_url=“菜单/获取菜单”;
获取菜单数据=函数(url\u结束){
log(“运行get_数据”);
var URL=“/api/&/”。替换(“&”,URL_结尾);
log(“URL:,URL”);
返回$.ajax({
数据类型:“json”,
url:url,
//键入:“获取”,
});
}
获取菜单数据(菜单url).完成(函数(数据){
var vm=新的OrderPageViewModel();
控制台日志(数据);
vm=ko.mapping.fromJSON(数据);
ko.应用绑定(vm);
}).fail(函数(){
警报(“失败”);
});
//应用绑定(新的OrderPageViewModel());
我遵循了上的示例,它说的是
uncaughttypeerror:cannotread属性'fromJSON'的undefined
fromJSON
方法是其中的一部分,不包含在代码敲除库中
您必须单独包含映射插件,因此在包含knockout之后添加以下行:
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.min.js" type='text/javascript'></script>
fromJSON的
方法是其中的一部分,不包含在代码淘汰库中
您必须单独包含映射插件,因此在包含knockout之后添加以下行:
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.min.js" type='text/javascript'></script>