首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将json数组传递给玉呈现页面中的javascript函数

将json数组传递给玉呈现页面中的javascript函数
EN

Stack Overflow用户
提问于 2017-02-15 11:07:09
回答 1查看 924关注 0票数 0

我有一个json数组被传递给一个玉模板。

然后,该模板在数组中运行,将行添加到html输出。

但是,新的要求no需要将json对象传递给javascript函数,因此我尝试:

代码语言:javascript
复制
- var json = JSON.stringify(rows);
input.medium.success.button.error(type='submit', id='update_details', value= sendCommandLabel, onclick='sendCommand(' + json + ')')

它提供以下输出(从简洁性中省略的完整数组):

代码语言:javascript
复制
<input type="submit" id="update_details" value="Send Command" onclick="sendCommand([{&quot;id&quot;:&quot;id1;,&quot;param1&quot;:value1, ... &quot;}])">

这是无用的,因为我想在javascript函数中使用这个输出,而就目前情况而言,我不能使用它。

我希望我错过了一些简单的东西,因为我的另一个选择是通过循环遍历渲染器中的对象来重新创建json数组。

UPDATE:我修改了代码,这样就没有将数组传递给函数,而是将数组硬编码到函数中,而不是在编译玉石页面时。所以这个:

代码语言:javascript
复制
    function sendStopCommandToAllSensors()
    {
        var hardcode = !{JSON.stringify(rows)};

变成了

代码语言:javascript
复制
    function sendStopCommandToAllSensors()
    {
        var hardcode = [{"id":"id1", ... }, {"id":"id2", ... }];

但那还是没用的。

令人费解的是,在其中添加了几个简单的alert,表明存在正确的对象数量(稍后通过将结果字符串直接剪切和粘贴到代码中,然后手动添加第三个对象)。

代码语言:javascript
复制
    alert(hardcode.length);     // displays 2
    alert("rows: " + hardcode); // displays [object Object],[object Object]

这就是为什么在下面的循环中,

代码语言:javascript
复制
    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。

代码语言:javascript
复制
alert("rows: " + JSON.stringify(hardcode));

为什么代码似乎没有正确地解析数组,我需要做些什么来纠正它?

更新III:我现在通过使用两个步骤的传统循环和赋值来让它工作。

代码语言:javascript
复制
        for (var i=0; i<rows.length; i++)
        {
            var row = rows[i];

所以现在的问题似乎是,为什么循环不能像预期的那样工作呢?

EN

回答 1

Stack Overflow用户

发布于 2017-02-27 23:00:18

我对此并不陌生,但我也经历了类似的问题。

但我完全同意JSON.stringify方法,这是您的第一个解决方案。在生成的hmtl中,它看起来很难看,但我发现它在我的例子中很有用。至少我想我理解得很对,而你并没有试图做一些我还无法吸收的魔法。

如果

代码语言:javascript
复制
rows=[{id:id,param:param},{id:id2,param:param2}]

翡翠:

代码语言:javascript
复制
- var json = JSON.stringify(rows);
input(type='submit', onclick='myFunction(' + json + ')')    

联署材料:

代码语言:javascript
复制
function myFunction(myRows) {  
  console.log(myRows[0].id);
  console.log(myRows[0].param);
  console.log(myRows[1].id);
  console.log(myRows[1].param);
  .
  .

至少在我正在做的事情上是可以的。

我希望我没有写一堆废话:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42247623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档