这个问题综合了两个仍然没有发现的问题:
我正在尝试实现一些ajax方法在网页上发布一些评论。我使用像这样的ajax方法:
<button id="my-btn">Make an Ajax request!</button>
<script >
$('#my-btn').click(function() {
var comment = $('#id1').val();
var m = {$id2};
var data = new Array();
data[0]= comment;
data[1]= m;
$.post('{$postURL}', data, function(callback_data){
alert('hello');
});
});
</script>
其中m = {$ id2};是因为一个聪明的变量。
警报('hello')有效,但不处理php代码:{$ postURL}需要方法comment(){$ comment = $ _POST [$ data [0]]; $ m = $ _POST [$ data [1]]; ...}。所以,postURL就像:“index.php?post = comment”,方法是comment()。当然,当我替换{$ postURL}时 “index.php?post = comment”,在我仍然有警报('hello')消息的意义上没有任何反应,但方法comment()不会处理任何事情。这种方法是否被称为?或者是否有错误的语法,以至于$ _POST [$ data [0]]和$ _POST [$ data [1]]都没有(通过comment()方法识别。
index.php的工作方式是重定向:到另一个php页面,调用mypage.php,在那里我们可以找到comment()方法。
此外,还有一些非常奇怪的事情:当我通过$ .post(“{$ whatever}”损坏$ .post(“{$ postURL}”时,我仍然有一条警报('hello')消息!而且更奇怪我发出一个警告(callback_data);在回调函数中,我收到一条巨大的警报信息,其中包含我的整个PHP代码......
最佳, Newben
答案 0 :(得分:1)
Smarty使用那些花括号,所以你需要使用{ldelim}和{rdelim}弹出它们,你也不会将后期数据作为关联数组发送,所以$ _POST ['comment']等不会被设置 - 试试这个:
<script>
$('#my-btn').click(function() {ldelim}
var comment = $('#id1').val();
var m = {$id2};
var data = {ldelim}
comment: $('#id1').val(),
m: {$id2}
{rdelim};
$.post("{$postURL}", data, function(callback_data){ldelim}
alert('hello');
{rdelim});
{rdelim});
</script>