このタスクの要件は次のとおりです-どのタイプのコンポーネントも使用できません(com_ajaxはオプションリストにありません)
目標:カスタムモジュール内でajaxを使用してチェックボックスが「オン」の場合、投稿データを送信します。
私のAJAXコードは正しいですか?具体的には、URLが正しい場合? 'defined(' _ JEXEC ')またはdie;'は、投稿データを次のような特定のファイルに送信することを許可しませんこれをコメントアウトしても、POSTデータを取得できません。何が問題なのでしょうか?print_r($ _ POST)を使用してmod_test.phpのPOSTEDデータにアクセスしようとします;
投稿されたデータ(コンポーネントを使用しない)をモジュールのhelper.php/mod_test.phpファイルに送信する別の方法はありますか?私は創造的なブレーンストーミングを受け入れています。
function function1() {
var data = $("[name='form1']").serialize();
$.ajax({
url: "modules/mod_test/mod_test.php",
type: "POST",
async: true,
cache: false,
data: data,
success: function(data){
alert(data);
}
});
}
<form method="post" action="this.form.submit();" name="form1">
<input type="checkbox" name="checkboxList[]" onclick="function1();" value="1">value1</input>
<input type="checkbox" name="checkboxList[]" onclick="function1();" value="2">value2</input>
<input type="checkbox" name="checkboxList[]" onclick="function1();" value="3">value3</input>
</form>
実際のコード例はすべて完璧です。
Joomlaのcom_ajaxを使用する必要があります。
目標を達成する方法は次のとおりです。
url
を
_index.php?option=com_ajax&ignoreMessages&module=YMODULE&method=YMETHOD&format=json
_
また、次の場所にモジュールヘルパーを作成する必要があります。
_/modules/mod_YMODULE/helper.php
_
ModYMODULEHelper
のようなクラスをそこに配置します。
最後のステップは、処理メソッドを次のように配置することです:public function YMETHODAjax(){return true;}
これでほぼすべてです。
デフォルト値を簡略化して使用するには:
url
=> _index.php?option=com_ajax&module=YMODULE&format=json
_
_processing method to use
_ => public function getAjax(){return true;}
しかし、これには_&ignoreMessages
_がないと、JFactory::getApplication()->enqueueMessage()
からシステムメッセージを受信できません。
また、別の投稿への回答で説明したプラグイン戦略を確認することもできます: カスタムモジュールでのAJAXの使用-方法
アレクサンダーが書いたことは正しいです。ちょうど2つのこと:
1.-メニューIDは必要ありません
2.-私としてはいけない:モジュールを登録してください[〜#〜] ymodule [〜#〜]テーブルextensionsで作成した(modを追加することを忘れないでください) )