私はすでにそれらの質問を読んだが、それらのどれも私のニーズに答えていない。(最新のものがちょうど追加したjQuery、AJAX、JSONP:空でも実際に配列を送信する方法は?
- Testing for an empty array object in JSON with jQuery
- jQuery 1.4.4+ AJAX request - post empty array or object becomes string
- Cannot access data from jQuery Ajax request, returns empty array
- JQuery removes empty arrays when sending
をハードコードされた引用符すなわち['']
が、私はこれを行うことはできません、私は配列を返す関数を呼び出しています)
だからここに私のコードは、(問題は空の配列new Array()
にあることに注意してください)です。
function AjaxSend() {
$.ajax({
url: '/json/myurl/',
type: 'POST',
dataType: 'jsonp',
data : { 'tab':new Array() },
context: this,
success: function (data) {
if (data.success) {
console.log('ok');
}
else {
console.log('error');
}
}
});
}
シンプルえっ? は、ここに私のPHPコードです:
echo '_POST='.var_export($_POST,true)."\n";
そして、ここでの結果です:私は、空でない、すなわちによって空の配列を変更した場合は
_POST=array (
)
jQuery1710713708313414827_1329923973282(...)
は:
は'tab':new Array({ 't':'u' },{ 'v':'w' })
結果は次のとおりです。
_POST=array (
'tab' =>
array (
0 =>
array (
't' => 'u',
),
1 =>
array (
'v' => 'w',
),
),
)
jQuery1710640656704781577_1329923761425(...)
Soこれは、送信される空のArray()があるときは無視され、にはが追加されないことを意味します。
何か不足していますか?
PS:私のjQueryのバージョンが最新のGoogle CDNすなわちからです:
http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
と
http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js
私はそれが空の場合でも、配列が送信されるようにしたいです(= []
を送信してください)! どのような解決策ですか?何か案が?私は既にこのオプションを追加しようとしましたtraditional: true
成功なし。
を試してみて、あなたが考えていますsendinについてg配列の長さを含む別の変数?長さがゼロの場合、配列は空です。このチェックは、ポストに欠けている配列変数を考慮する代わりに使用できます。 – tvanfosson
'data:{'tab':[]}、' – Vytautas
@Vytautas:それは同じです。 –