0

这个问题综合了两个尚未解决的问题:

我正在尝试实现一些 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}; 是由于一个聪明的变量。

alert('hello') 有效,但未处理 php 代码: {$postURL} 需要方法 comment(){$comment = $_POST[$data[0]]; $m = $_POST[$data[1]];...}。所以,postURL 就像:"index.php?post=comment",方法是comment()。当然,当我用“index.php?post=comment”替换 {$postURL} 时,没有任何反应,因为我仍然有 alert('hello') 消息,但方法 comment() 没有处理任何内容。这个方法是否被调用?或者是否存在错误的语法,例如 $_POST[$data[0]] 和 $_POST[$data[1]] 无法通过 comment() 方法识别。

index.php 的工作方式是将 : 重定向到另一个 php 页面,将其命名为 mypage.php,我们可以在其中找到 comment() 方法。

此外,一些非常奇怪的事情:当我用 $.post("{$whatever}" 破坏 $.post("{$postURL}" 时,我仍然有一个 alert('hello') 消息!更奇怪的是,当我放一个alert(callback_data); 在回调函数中,我收到一条巨大的警报消息,其中包含我的整个 php 代码......

最好的,纽本

4

1 回答 1

1

Smarty 使用这些花括号,因此您需要使用 {ldelim} 和 {rdelim} 将它们弹出,而且您不会将帖子数据作为 assoc 数组发送,因此不会设置 $_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>
于 2012-06-27T14:40:21.357 回答