1

私は答えを探していましたが、今日まで誰も見つかりませんでした:

Webページにコメントを投稿するために、いくつかの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}; これは smarty 変数によるものです。

動作します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()

このメソッドは呼び出されますか? または、comment() メソッドで$_POST[$data[0]]and are(t が認識されない)などの間違った構文があります。$_POST[$data[1]]

index.php が動作する方法は、リダイレクトすることです: 別の php ページに、それを mypage.php と呼び、そこでメソッドを見つけることができますcomment()

さらに、何か非常に奇妙なこと$.post("{$postURL}"$.post("{$whatever}"ありalert('hello')ます。さらに奇妙なのは、alert(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 に答える