私はPOST ajax呼び出しを次のように送信しています:
_var request = {
option : 'com_ajax',
module : 'mod_test', // to target: mod_test
method : 'Test', // to target: function TestAjax in class modTestHelper
format : 'raw',
data : {a: [], b: {}, c: [0], d: [null]}
};
$.ajax({method: 'POST', data: request})
// .success( ...yatta yatta
_
私は受け取っています:
_$data = JFactory::getApplication()->input->post->get('data', array(), 'array');
_
ただし、渡された空のサブ配列(a
)とサブオブジェクト(b
)は、phpスクリプトに到達する前に消去されます。したがって、_$data
_の内容は_['c'=>'0', 'd'=>['']]
_です。つまり、isset($data['a'])
またはisset($data['b'])
を呼び出すと、false
として評価されます。
私のモジュールでは、空の配列を表すために文字列_0
_を渡してしまいましたが、空の配列をphpに渡すことが許可されている場合、コードはより簡潔になります。 (私のプロジェクトでは、最初のレベルには既知の数の要素があり、サブ配列のみが動的に生成されます。)
JFactory...
_行を調整できますか?私はいくつかの洞察を得ましたが、これらの関連する回答から完全な解決策ではありませんでした:
Joomla 3.8.6を使用しています
$ _POSTをヘルパーのajaxメソッドにダンプすると、空の配列がサーバーにヒットしないことがわかります。 Joomlaの入力オブジェクトは、$ _ POSTからの値の取得に完全に依存しています。
JQuery ajaxは空の配列を渡しません。詳細については、この例を参照してください。 https://stackoverflow.com/questions/9397669/jquery-ajax-jsonp-how-to-actually-send-an-array-でもその空の場合