html中无法调用php中变量,html - javascript if判断执行体中无法使用变量

html - javascript if判断执行体中无法使用变量

var pagepath = window.location.pathname;

$.ajax({

type: 'post',

url: '{{ url_for("getposts") }}',

data: {'category':pagepath},

success: function (msg) {

$.each(msg, function (i, n) {

var row = $('#post-clone').clone();

var postid = n.id;

console.log(postid);

row.find('#post-name').text(n.name);

row.find('#post-author').text(n.author);

row.find('#post-ctime').text(n.ctime);

row.find('#post-mtime').text(n.mtime);

row.find('#post-small').text(n.small);

row.find('#postcontainer_p').text(n.container);

if ( n.author == '{{ g.user.username }}') {

$('a#post-getpost').attr('onclick', 'getpost(n.id)');

}

row.appendTo('#post-content').css('display', 'block')

})

}

});

javascript if判断执行体中无法使用变量

问题在于getpost(n.id),会报错.提示n未定义.

数据使用json传递到jquery.

55331.html

回答

4

0

分享

全部回复 (4)

86e6b7d6f95c31139ee840748d3c5dad.png

伊谢尔伦2017-04-11 12:51:464楼

作用域的问题。

$('a#post-getpost').attr('onclick', 'getpost(n.id)');

这段代码结果应该是在dom中

在这里函数名getpost、参数n都是全局的。

而在

$.each(msg, function (i, n) {

回调中n的作用域限制在回调函数里,并且此时全局没有n这个变量

所以n是undefined

可以改成

$('a#post-getpost').attr('onclick', 'getpost(' + n.id + ')');

55331.html

回复81b43a0f70ab280a4fde0270efb2326d.png

小皮2017-04-11 12:51:463楼

$('a#post-getpost').attr('onclick', 'getpost('+n.id+')');

试试

55331.html

回复1404ff433e84f710e3b5fa747f6f5da4.png

怪我咯2017-04-11 12:51:462楼

'getpost('+n.id+')'

这样?

55331.html

回复6484d079e493d97f03487117e31efefd.png

ringa_lee2017-04-11 12:51:461楼

必须照楼上这样写啊

55331.html

回复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值