将JavaScript变量传递给匿名函数

时间:2015-12-16 13:50:56

标签: javascript jquery ajax dom selector

我正在使用jQuery的Ajax方法异步发送一个POST请求,其中包含以"name"和{{1} ID形式输入的用户"comment"name值} comment页面分别返回comment.php div中显示的HTML消息(成功或错误)。

到目前为止,一切都运行良好,注释会添加到数据库中,并在#info表中的页面刷新时显示。现在我只想将用户的姓名和评论直接添加到评论表中,但我遇到了问题,我无法从内部访问#commentsname变量在comment方法中调用的匿名函数。

这是我的代码:

.done()

显然,简单地将var name = $('#name').val(); var comment = $('#comment').val(); var data = "name="+name+"&comment="+comment; $.ajax( { type: "POST", url: "comment.php", data: data // Provided form data } ).done ( function(data) // Returned data from URL endpoint { // Show returned message $('#info').html(data); var newRowContent = '<tr> <td>'+name+'</td> <td>'+comment+'</td> </tr>'; $(newRowContent).appendTo( $('#comments') ); } ); name添加到匿名函数的参数中并不起作用,并且变量在范围之外声明,所以我不是确定为什么他们在桌子上打印时会产生空字符串。我很感激帮助和解释我没有到达的地方。

更新:以下是我尝试做的一个示例JSFiddle,它可以在这里运作。

更新:我认为我已经确定了问题,我用来从字段中分配值的ID选择器的值不起作用由于某种原因,将变量保留为空字符串,以及存储在数据库中的变量。

更新:我终于找到了原因,我使用的表单包含在commentdiv中,因此只显示表单一次用户点击&#34;显示评论&#34;按钮,这是有效的。问题是jQuery值选择器display; none处理&#34;隐藏&#34;输入方式不同,我只能找到可追溯到2009 - 2011年的答案,这些答案适用于旧版本的jQuery,而不是这个。

我希望有人可以通过ID来选择当我显示并填充用$('').val();样式时div内的输入值时,有人可以回答我的问题。

1 个答案:

答案 0 :(得分:0)

它认为这可能是由于&#34;超出范围的行为&#34; 。您可以尝试返回从URL端点提交的数据(名称,注释),然后获取这些值。类似的东西:

 function(data) // Returned data from URL endpoint
        {
            // First you need to parse the json data
            data = JSON.parse(data);
            // Show returned message
            $('#info').html(data['info']);

            // Then you get the data returned
            var newRowContent = '<tr> <td>'+ data['name'] +'</td> <td>'+ data['comment'] +'</td> </tr>';

            $(newRowContent).appendTo( $('#comments') );
        }
  

当然,假设您正在返回json数据。希望能帮助到你! ;)