0

これは、未解決のままの 2 つの質問を統合した質問です。

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() は何も処理しないという意味では何も起こりません。このメソッドは呼び出されますか? または、 $_POST[$data[0]] と $_POST[$data[1]] が comment() メソッドで認識されないような間違った構文があります。

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

さらに、非常に奇妙なことがあります: $.post("{$postURL}" を $.post("{$whatever}" で破損した場合、まだアラート('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 に答える