ajax jquery未解决

时间:2012-06-27 14:34:26

标签: php jquery ajax

这个问题综合了两个仍然没有发现的问题:

我正在尝试实现一些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

1 个答案:

答案 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>