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 将json推送到敲除可观察数组_Javascript_Json_Knockout.js - Fatal编程技术网

Javascript 将json推送到敲除可观察数组

Javascript 将json推送到敲除可观察数组,javascript,json,knockout.js,Javascript,Json,Knockout.js,我有可观察的单选按钮,这取决于我想要触发一个GETJSON方法来返回数据的值,然后将其推送到一个可观察的数组中,我将其显示为一个列表。我得到的错误是 无法读取未定义的属性“push”。这是我的 单击单选按钮触发getjson方法后,如何将该数据获取到可观察数组中 self.currentAnswer = ko.observable(); self.recipientList = ko.observableArray([]); self.currentAnswer.subscribe(fu

我有可观察的单选按钮,这取决于我想要触发一个GETJSON方法来返回数据的值,然后将其推送到一个可观察的数组中,我将其显示为一个列表。我得到的错误是 无法读取未定义的属性“push”。这是我的

单击单选按钮触发getjson方法后,如何将该数据获取到可观察数组中

self.currentAnswer = ko.observable();
    self.recipientList = ko.observableArray([]);
self.currentAnswer.subscribe(function (newValue) {
    if (newValue == 'Internal') {
        $.getJSON('GetInfo', function (data) {
            var result = $.parseJSON(data);

            self.recipientList.push(result);


        });

我更新了你的小提琴,使它能用。基本上你需要调用self.recipientList.push.apply(self.recipientList,result)


我更新了你的小提琴,让它能用。基本上你需要调用self.recipientList.push.apply(self.recipientList,result)

需要考虑的事项:

  • $.getJSON()
    将为您解析JSON,您无需亲自解析。对于
    $.get()
    ,也是如此。(*)
  • 敲除观测值是函数。您可以将它们用作回调。(**)
有了这些知识:

self.recipientList = ko.observableArray();
self.currentAnswer = ko.observable();
self.currentAnswer.subscribe(function (newValue) {
    if (newValue == 'Internal') {
        $.get('GetInfo').done(self.recipientList);
    }
});

(*)如果在成功回调中未获得解析的JSON,请修复响应的
内容类型
标题

(**)如果调用observable并将值作为第一个参数传递,它将存储该值。巧合的是,jQuery调用Ajax成功回调,将返回值作为第一个参数传递。完美贴合。

需要考虑的事项:

  • $.getJSON()
    将为您解析JSON,您无需亲自解析。对于
    $.get()
    ,也是如此。(*)
  • 敲除观测值是函数。您可以将它们用作回调。(**)
有了这些知识:

self.recipientList = ko.observableArray();
self.currentAnswer = ko.observable();
self.currentAnswer.subscribe(function (newValue) {
    if (newValue == 'Internal') {
        $.get('GetInfo').done(self.recipientList);
    }
});

(*)如果在成功回调中未获得解析的JSON,请修复响应的
内容类型
标题


(**)如果调用observable并将值作为第一个参数传递,它将存储该值。巧合的是,jQuery调用Ajax成功回调,将返回值作为第一个参数传递。完美贴合。

我已经更新了小提琴()。它解决了你的任务吗?这帮我解决了。我已经更新了小提琴()。它解决了你的任务吗?这帮我解决了。这可以工作,但它正在推送到收件人列表数组中,我正在尝试将它推到项目数组中。@Leonardo您的示例代码中没有项目数组。我在前面根据@TSV comment进行了更新。这可以工作,但它正在推送到收件人列表数组中,我正在尝试将它推到项目数组中。@Leonardo您的示例代码中没有项目数组。我在前面根据@TSV comment进行了更新。没有意识到,很整洁!将这个小把戏与一些改进(以及一个实际的Ajax请求)进行比较:Ajax调用很酷,我不熟悉params的使用。此外,我试图完成的最终任务是加载一个文本区域,将JSON数据移动到items observable数组中,并使其可以选择发送回服务器。谢谢你的回答!设置Viewmodels总是一个好主意,以便它们接受一个对象并从该对象初始化自己。使创建和重复使用它们变得更加简单。思考一下我答案中的第二个要点。:)没有意识到,很整洁!将这个小把戏与一些改进(以及一个实际的Ajax请求)进行比较:Ajax调用很酷,我不熟悉params的使用。此外,我试图完成的最终任务是加载一个文本区域,将JSON数据移动到items observable数组中,并使其可以选择发送回服务器。谢谢你的回答!设置Viewmodels总是一个好主意,以便它们接受一个对象并从该对象初始化自己。使创建和重复使用它们变得更加简单。思考一下我答案中的第二个要点。:)