在遇到js里面动态添加html代码,在html里面需要有php代码,在php代码中又有ajax回调回来的动态数据(js代码)。解决后还是用的tp框架里面的url方法,如果不统一用url方法,配置路由时很麻烦不能保证都能路由到。这里提供一下解决思路:
把需要用js添加上去的html作为一个字符串,字符串里写上tp的模板代码,动态传的数据用一个字符表示,再用js replace方法把动态参数替换之前写进去的字符。再把替换好的字符串放在 append里面。这样就完成了。
这里附上代码:
$.each(data.data, function(index, val) {
var strnan = '<li><a href="{:url(\'index/Index/book\',array(\'bid\' => \'b_id\'))}"><img src="/uploads/'+val.book_img+'" alt=""></a><h4>'+val.book_title+'</h4><span class="introduce">'+val.book_desc+'</span><div class="label0"><span class="label1">'+val.cate_id+'</span><span class="label2">'+val.is_over+'</span><span class="label3">'+val.is_free+'</span></div> </li>';
strnan1 = strnan.replace("b_id",val.bid);
$("#book").append(strnan1);
})
在遇到一个接口传的参数有两个或多个不同的参数时,直接
Route::get('famous','index/Index/famous');
这样就行了,它会自己根据你传的参数去找。如果是一个参数的话可以写上这个参数:
Route::get('book/:bid','index/Index/book');