2013-11-14 189 views
0

我是Javascript/jQuery的初学者,我正在使用KnockoutJS创建一个界面,所以我有几个模型。我想将所有数据保存在数据库中,但我不知道如何去做。如何从json获取数据以便将它们保存到数据库中?

我开始:

self.save = function() { 
     var data = ko.toJS(self); 
     var test = ko.toJSON(self); 
     console.log(test); 
    } 

    $.ajax({ 
     url: "myURL", 
     data: {'carrier': data.carrier}, 
     type: "POST", 
    }); 

,这是执行console.log的结果:

{"id":1,"carrier":"1","Settings":[{"id":1,"price":{"id":1,"DeliveryStandard":"3.00","DeliveryExpress":"6.00","Details":{"id":1,"Standard":[{"id":1,"fromPrice":0,"maxPrice":"45.000"}],"Express"[{"id":1,"fromPrice":0,"maxPrice":"66.000"}]}}}}]} 

我可以用data.carrier得到载体的价值,但我不知道如何从DeiveryStandard,DeliveryExpress,fromPrice,maxPrice等其他数据...

你有想法吗?

非常感谢您,如果我的问题很傻,我很抱歉!

+0

为什么不将测试变量的全部内容发送到服务器? – pax162

+0

感谢您的快速回复!事实上,“myURL”是一个web服务,它对应于包含“载体”的表,并且我希望将相应的web服务中的每个数据发送到相应的服务器上,但我不知道它是否可行。 – Blondie

+0

因此,您还有其他web服务其他物件? – pax162

回答

0

这应该起作用。

console.log(data.Settings[0].price.DeliveryStandard); 
+0

是的,它的工作原理!谢谢你们的快速响应 – Blondie

3

如果格式化你的JSON到一个更可读的格式,缩进,这使得它更容易理解:

(但应注意的是,只有在技术上JSON而在字符串格式,外它只是一个标准的JavaScript对象)

{ 
"id":1, 
"carrier":"1", 
"Settings":[ 
    { 
    "id":1, 
    "price": { "id":1, 
       "DeliveryStandard":"3.00", 
       "DeliveryExpress":"6.00", 
       "Details": { "id":1, 
          "Standard": [{"id":1, 
              "fromPrice":0, 
              "maxPrice":"45.000" 
              }], 
          "Express" //Missing semi-colon 
            [{"id":1, 
             "fromPrice":0, 
             "maxPrice":"66.000" 
             }] 
          } 
      } 
    }}//One too many closing braces 
    ] 
} 

首先要注意的是,您有2个语法错误,上面突出显示了注释。所以先解决它们! (虽然我不知道他们是否有错别字,你似乎它在您结束工作)


然后我们可以看一下结构树制定出你想要的值是...

DeiveryStandardDeliveryExpress都是分配给price的对象的属性,它是Settings数组中第一项的属性。所以,你可以像这样访问他们:

var DeliveryStandard = data.Settings[0].price.DeliveryStandard; 
var DeliveryExpress= data.Settings[0].price.DeliveryExpress; 

fromPricemaxPrice被发现多次,在这两个StandardExpress项目。所以你需要决定你需要什么版本。如果你想Standard,那么你可以得到Standard数组的第一个项目,像这样:

var standardObject = data.Settings[0].price.Details.Standard[0]; 

然后你就可以访问像属性:

var fromPrice = standardObject.fromPrice; 
var maxPrice = standardObject.maxPrice; 

我相信你能解决如何获取相同数据的Express版本!


从你仿佛已经能够在自己的工作了,我觉得你的问题是不知道如何处理数组。请注意,使用方括号[]定义数组,并且应使用基于零的索引访问数组中的元素,例如:第一个元素为array[0],第二个元素为array[1]

+0

非常感谢你的帮助! – Blondie

0

在你的JSON修正了一些错误。


var j = { 
    "id" : 1, 
    "carrier" : "1", 
    "Settings" : [{ 
      "id" : 1, 
      "price" : { 
       "id" : 1, 
       "DeliveryStandard" : "3.00", 
       "DeliveryExpress" : "6.00", 
       "Details" : { 
        "id" : 1, 
        "Standard" : [ 
         { 
          "id" : 1, 
          "fromPrice" : 0, 
          "maxPrice" : "45.000" 
         } 
        ], 
        "Express": [ 
         { 
          "id" : 1, 
          "fromPrice" : 0, 
          "maxPrice" : "66.000" 
         } 
        ] 
       } 
      } 
     } 
    ] 
}; 

alert(j.Settings[0].price.DeliveryStandard); 
alert(j.Settings[0].price.DeliveryExpress); 
alert(j.Settings[0].price.Details.Standard[0].fromPrice); 
alert(j.Settings[0].price.Details.Standard[0].maxPrice); 
相关问题