【问题标题】:Passing JSON Object to variable将 JSON 对象传递给变量
【发布时间】:2011-08-07 08:28:11
【问题描述】:

我正在尝试传递由 openURL 方法返回的最后一个 ID 变量。这是代码:

" + ": function() {
    formCount++;
    $( "#form tbody" ).append('<tr class="test"><td><input type="text" id="requirement'+formCount+'" class="text ui-widget-content ui-corner-all" /></td><td><input type="text" id="objects'+formCount+'" value="" class="text ui-widget-content ui-corner-all" /></td><td><input type="text" id="andor'+formCount+'" value="" class="text ui-widget-content ui-corner-all" /></td><td><input type="text" id="qty'+formCount+'" value="" class="text ui-widget-content ui-corner-all" /></td><td><div id="del'+formCount+'"><img src="themes/balance/images/delete_button.png" style="cursor:pointer; margin-left: 15px; margin-bottom: 5px;" alt="Delete" /></div></td></tr>');
                    
    /* Delete requirement from database */
    $("#del"+formCount).click(function(param) {
        $(this).parent().parent().remove(); // removes whole row in layout
        var ReqID = ?????;
        var query = '.requirements.deleteRequirement/'+gameID+'/'+ReqID+''; 
        openURL(url+query, function(param) { });
        //alert(url+query);            
    });

    /* Add requirement to database */
    var query = '.requirements.createRequirement/'+gameID+'/Location/'+id+'/PLAYER_HAS_ITEM/1/1/1/1';
    openURL(url+query, function(param) { 
        var CaughtID = new Boolean(param.lastID);
        if(CaughtID.valueOf()) {
            $(".test").append('<input type="hidden" id="reqID'+formCount+'" value="'+param.lastID+'" />')
        }
        param.lastID = 0; // important! Prevent to keep the last value in the object after add (check in DOM ;) )
        
    });
}

我的问题是将 param.lastID 传递给 ReqID。我试过$("#reqID"+formCount).val() 但它返回未定义,可能是因为异步函数。我的问题是,如何解决这个问题?

【问题讨论】:

  • 你为什么要给" + "分配一个函数?我希望这是一个类型-o...
  • 那么,您正在为按钮分配功能??一个匿名的???

标签: json variables object


【解决方案1】:

事件处理程序的唯一参数是事件对象。

如果我正确理解了您的代码,那么您正在尝试获取您在创建对象时设置的值。您必须从值中提取数据:

var ReqID = $(this).val()

这会给你一个字符串,你可以让它在你的代码中工作。

编辑:

"#del" + formCount 在哪里定义?你可能需要一个不同的选择器......也许是这样的:

var ReqID = $('reqID' + formCount).val();

【讨论】:

  • "#del" + formCount 在这里定义 $( "#form tbody" ).append
  • 我的解决方案不起作用?特别是我给的第二个。那似乎是您存储该数据的地方。您可能应该在删除所有内容之前获取数据...
  • 很遗憾,它不起作用,我在 var ReqID = $('reqID' + formCount).val();并且 alert(url+query) 返回这个 clip2net.com/s/165wq
  • 在 chrome 或 firebug 上,您可以检查单个元素并查看实时数据。数据在吗?您是否在尝试访问之前删除了该元素?
  • in reqID + formCount 是正确的数据,但它可能出现在 var ReqID = $('reqID' + formCount).val(); 之后被创建了,这就是我认为的问题......
猜你喜欢
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
  • 2019-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多