Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
Javascript 无法处理绑定,请使用ko.mapping.fromJS将JSON数据推送到ObservableArray_Javascript_Json_Ajax_Knockout.js - Fatal编程技术网

Javascript 无法处理绑定,请使用ko.mapping.fromJS将JSON数据推送到ObservableArray

Javascript 无法处理绑定,请使用ko.mapping.fromJS将JSON数据推送到ObservableArray,javascript,json,ajax,knockout.js,Javascript,Json,Ajax,Knockout.js,谁能解释一下我的代码出了什么问题,我是个新手。。。所以,最初我从数据库接收json数据,它就可以工作了。当我单击“添加一些”时,我想将相同的数据从数据库添加(推送)到我的可观察数组中。下面的代码显然不起作用。谢谢 错误:无法处理绑定“text:function(){return AdId}” HTML: <div data-bind="foreach: Ads"> <p data-bind="text: AdId"></p>

谁能解释一下我的代码出了什么问题,我是个新手。。。所以,最初我从数据库接收json数据,它就可以工作了。当我单击“添加一些”时,我想将相同的数据从数据库添加(推送)到我的可观察数组中。下面的代码显然不起作用。谢谢 错误:无法处理绑定“text:function(){return AdId}”

HTML:

<div data-bind="foreach: Ads">     
    <p data-bind="text: AdId"></p>         
</div>

<div data-bind="click: addSome">Add some</div>
function AdListModel() {
var self = this;
self.Ads = ko.mapping.fromJS([]);

self.result = function (model) {
    ko.mapping.fromJS(model, self.Ads);
}    

self.InitialData = function () {
    $.ajax({
        type: "GET",
        url: '/Home/GetAllAds',
        data: { startPosition: 0, numberOfItems: 2 },
        dataType: "json",
        success: function (data) {

            self.result(data); <---- works

        }
    });
}

self.addSome = function () {
    $.ajax({
        type: "GET",
        url: '/Home/GetAllAds',
        data: { startPosition: 0, numberOfItems: 2 },
        dataType: "json",
        success: function (data) {

            self.Ads.push(data); <---- doesn't work


        },
    });

};

self.InitialData();
}

ko.applyBindings(new AdListModel());

加点
型号:

<div data-bind="foreach: Ads">     
    <p data-bind="text: AdId"></p>         
</div>

<div data-bind="click: addSome">Add some</div>
function AdListModel() {
var self = this;
self.Ads = ko.mapping.fromJS([]);

self.result = function (model) {
    ko.mapping.fromJS(model, self.Ads);
}    

self.InitialData = function () {
    $.ajax({
        type: "GET",
        url: '/Home/GetAllAds',
        data: { startPosition: 0, numberOfItems: 2 },
        dataType: "json",
        success: function (data) {

            self.result(data); <---- works

        }
    });
}

self.addSome = function () {
    $.ajax({
        type: "GET",
        url: '/Home/GetAllAds',
        data: { startPosition: 0, numberOfItems: 2 },
        dataType: "json",
        success: function (data) {

            self.Ads.push(data); <---- doesn't work


        },
    });

};

self.InitialData();
}

ko.applyBindings(new AdListModel());
函数AdListModel(){
var self=这个;
self.Ads=ko.mapping.fromJS([]);
self.result=函数(模型){
fromJS(model,self.Ads);
}    
self.InitialData=函数(){
$.ajax({
键入:“获取”,
url:“/Home/GetAllAds”,
数据:{startPosition:0,numberOfItems:2},
数据类型:“json”,
成功:功能(数据){

self.result(data);从错误消息中可以看出,您的
模型
没有
AdId
属性

您可以添加API返回的JSON模型的转储吗

编辑

您的
Ads
属性应该是
ko.observearray()
而不是
ko.mapping.fromJS([])

编辑2

在推送数据之前,您必须映射数据:

$.ajax({
    type: "GET",
    url: '/Home/GetAllAds',
    data: { startPosition: 0, numberOfItems: 2 },
    dataType: "json",
    success: function (data) {
        self.Ads.push(ko.mapping.fromJS(data));
    },
});
编辑3

如果您的JSON如下所示:

[
    {"AdId":1,"AdContent":"test1"},
    {"AdId":2,"AdContent":"test2"}
]
然后它是一个数组,您必须迭代每个条目:

$.ajax({
    type: "GET",
    url: '/Home/GetAllAds',
    data: { startPosition: 0, numberOfItems: 2 },
    dataType: "json",
    success: function (data) {
        data.forEach(function(d) {
            self.Ads.push(ko.mapping.fromJS(d));
        });
    },
});

[{“AdId”:1,“AdContent”:“test1”},{“AdId”:2,“AdContent”:“test2”},…],但最初它是有效的,当我想在单击时添加相同的数据时它不起作用。不,这不起作用,我尝试更改self.Ads(数据)并单击self.Ads.push(数据).nothing。请参见编辑,在将数据推送到数组之前,您必须映射数据。您当前正在将原始数据推送到可观察数组。从您的问题来看,您似乎尝试了我的解决方案:(您可以发布一个从服务器返回的JSON示例吗?它是对象还是数组?抱歉,我没有看到您的模型。它看起来像一个数组,所以您必须迭代每个条目。请参阅编辑3。。。