Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
Jquery KnockoutJS通过映射插件绑定问题从远程源获取JSON_Jquery_Knockout.js_Jsonp_Knockout Mapping Plugin - Fatal编程技术网

Jquery KnockoutJS通过映射插件绑定问题从远程源获取JSON

Jquery KnockoutJS通过映射插件绑定问题从远程源获取JSON,jquery,knockout.js,jsonp,knockout-mapping-plugin,Jquery,Knockout.js,Jsonp,Knockout Mapping Plugin,我有一个jQuery: $.ajax({url : sUrl, dataType: "jsonp", type: "GET", contentType: "application/json;charset=utf-8", headers: { "accept": "application/json;charset=utf-8" }, error: function (a, b, c){ alert(a); alert(a.s

我有一个jQuery:

$.ajax({url : sUrl,
    dataType: "jsonp",
    type: "GET",
    contentType: "application/json;charset=utf-8",
    headers: { "accept": "application/json;charset=utf-8" },
    error: function (a, b, c){
        alert(a);
        alert(a.status);
        alert(b);
        alert(c);
    },
    success: function (data) {
        alert(data);
        var viewModel = ko.mapping.fromJS(data);
        alert(viewModel);

        /*$.each(data, function (index, element) { 
            alert(index);
            alert(element);
        });*/
    }
});
警报(数据)给了我以下信息:

第二个警报告诉我:

function c(){if(0<arguments.length)return c.equalityComparer&&c.equalityComparer(d,arguments[0])||(c.K(),d=arguments[0],c.J()),this;a.q.bb(c);return d}
我只是不知道将这个JSON解析成一个好表的最佳方法是什么。我认为它将在viewmodel中为我提供一个行数组,并且我可以执行如下操作: 但是我不知道映射是否有效,以及如何绑定到例如
number
prop

<tbody data-bind="foreach: iHaveNoClue">
    <tr>
        <td data-bind="text: 0"></td>
        <td data-bind="text: id"></td>
        <td data-bind="text: 1"></td>
        <td data-bind="text: number"></td>
        <td data-bind="text: 2"></td>
        <td data-bind="text: date_time"></td>
    </tr>
</tbody>

预先注意:因为您有名称为数字的属性,所以您必须跳过一些限制才能使
文本
绑定处理程序正常工作。一种方法是将
text:1
替换为
text:$data['1']


你在正确的轨道上。
iHaveNoClue
可以替换为
$root
,例如:

<tbody data-bind="foreach: $root">

有关该版本的演示,请参阅。在本例中,viewModel是一个简单的对象,但您也可以创建一个构造函数来构建更复杂的视图模型。

您好,Jeroen,谢谢您的回复。我有
var viewModel=ko.mapping.fromJSON(数据)
而不是
var viewModel=ko.mapping.fromJS(数据)ko.applyBindings(viewModel)。你的
$root
修复了它!再次感谢,让我开心!我注意到一只小虫子。viewmodel属性(如0、1、2)不会在JSFIDLE中解析。它不起作用。啊,你是对的。这是一个完全不同的问题。我已经更新了我的答案,并将小提琴与这个问题联系起来。
<tbody data-bind="foreach: $root">
var viewModel = {
    title: ko.observable("My title"),
    items: ko.mapping.fromJS(data)
};