我正在使用jQuery的Ajax方法异步发送一个POST请求,其中包含以"name"
和{{1} ID形式输入的用户"comment"
和name
值} comment
页面分别返回comment.php
div中显示的HTML消息(成功或错误)。
到目前为止,一切都运行良好,注释会添加到数据库中,并在#info
表中的页面刷新时显示。现在我只想将用户的姓名和评论直接添加到评论表中,但我遇到了问题,我无法从内部访问#comments
和name
变量在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选择器的值不起作用由于某种原因,将变量保留为空字符串,以及存储在数据库中的变量。
更新:我终于找到了原因,我使用的表单包含在comment
块div
中,因此只显示表单一次用户点击&#34;显示评论&#34;按钮,这是有效的。问题是jQuery值选择器display; none
处理&#34;隐藏&#34;输入方式不同,我只能找到可追溯到2009 - 2011年的答案,这些答案适用于旧版本的jQuery,而不是这个。
我希望有人可以通过ID来选择当我显示并填充用$('').val();
样式时div
内的输入值时,有人可以回答我的问题。
答案 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数据。希望能帮助到你! ;)