これは、未解決のままの 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 コード全体で構成される巨大な警告メッセージを受け取ります...
ベスト、ニューベン