我有一个json数组被传递给一个玉模板。
然后,该模板在数组中运行,将行添加到html输出。
但是,新的要求no需要将json对象传递给javascript函数,因此我尝试:
- var json = JSON.stringify(rows);
input.medium.success.button.error(type='submit', id='update_details', value= sendCommandLabel, onclick='sendCommand(' + json + ')')它提供以下输出(从简洁性中省略的完整数组):
<input type="submit" id="update_details" value="Send Command" onclick="sendCommand([{"id":"id1;,"param1":value1, ... "}])">这是无用的,因为我想在javascript函数中使用这个输出,而就目前情况而言,我不能使用它。
我希望我错过了一些简单的东西,因为我的另一个选择是通过循环遍历渲染器中的对象来重新创建json数组。
UPDATE:我修改了代码,这样就没有将数组传递给函数,而是将数组硬编码到函数中,而不是在编译玉石页面时。所以这个:
function sendStopCommandToAllSensors()
{
var hardcode = !{JSON.stringify(rows)};变成了
function sendStopCommandToAllSensors()
{
var hardcode = [{"id":"id1", ... }, {"id":"id2", ... }];但那还是没用的。
令人费解的是,在其中添加了几个简单的alert,表明存在正确的对象数量(稍后通过将结果字符串直接剪切和粘贴到代码中,然后手动添加第三个对象)。
alert(hardcode.length); // displays 2
alert("rows: " + hardcode); // displays [object Object],[object Object]这就是为什么在下面的循环中,
for (var row in hardcode)
{
alert("row: " + row); // displays 0 or 1, not an object
if (row.active == 1)
{
alert("Reached here"); // never reached最后一条线永远达不到。
UPDATE II:通过stringifying hardcode,我可以输出人类可读的json。
alert("rows: " + JSON.stringify(hardcode));为什么代码似乎没有正确地解析数组,我需要做些什么来纠正它?
更新III:我现在通过使用两个步骤的传统循环和赋值来让它工作。
for (var i=0; i<rows.length; i++)
{
var row = rows[i];所以现在的问题似乎是,为什么循环不能像预期的那样工作呢?
发布于 2017-02-27 23:00:18
我对此并不陌生,但我也经历了类似的问题。
但我完全同意JSON.stringify方法,这是您的第一个解决方案。在生成的hmtl中,它看起来很难看,但我发现它在我的例子中很有用。至少我想我理解得很对,而你并没有试图做一些我还无法吸收的魔法。
如果
rows=[{id:id,param:param},{id:id2,param:param2}]翡翠:
- var json = JSON.stringify(rows);
input(type='submit', onclick='myFunction(' + json + ')') 联署材料:
function myFunction(myRows) {
console.log(myRows[0].id);
console.log(myRows[0].param);
console.log(myRows[1].id);
console.log(myRows[1].param);
.
.至少在我正在做的事情上是可以的。
我希望我没有写一堆废话:)
https://stackoverflow.com/questions/42247623
复制相似问题