1

我一直在寻找答案,但就今天而言,没有人找到:

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

当然,当我替换{$postURL}为时"index.php?post=comment",没有任何事情发生,因为我仍然有alert('hello')消息但该方法comment()不处理任何内容。

这个方法是否被调用?或者是否存在错误的语法,$_POST[$data[0]]并且$_POST[$data[1]]无法通过 comment() 方法识别。

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

而且,很奇怪的事情:当我腐败$.post("{$postURL}"的时候$.post("{$whatever}",我还有一个alert('hello')消息!更奇怪的是,当我发出警报时(callback_data);在回调函数中,我收到一条巨大的警报消息,其中包含我的整个 php 代码......

在一个先例问题中,我被告知要放置一些分隔符,因为 Smarty 就像这样:

$('#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});

但是,什么都没有改变,

有人有想法吗?

最好的,纽本

4

1 回答 1

0

问题可能是您将数据作为 javascript 数组传递,但它应该是此处提到的映射或字符串。尝试这个 :

<script >
  $('#my-btn').click(function() {
    var comment = $('#id1').val();   
    var m = {$id2};
       $.post('<?php echo $postURL ?>', {0 : comment,1 : m}, function(callback_data){
            alert('hello');
       });
  });
</script>
于 2012-06-27T16:22:45.250 回答