Tôi đã đọc những câu hỏi nhưng không ai trong số họ trả lời cho nhu cầu của tôi:jQuery, AJAX, JSONP: làm thế nào để thực sự gửi một mảng ngay cả khi nó trống?
- 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
(mới nhất ai nói chỉ cần thêm các dấu ngoặc đơn được mã hoá cứng tức là ['']
nhưng tôi không thể làm điều này, tôi gọi một hàm trả về một mảng)
vì vậy đây là mã của tôi (lưu ý rằng vấn đề nằm ở mảng trống 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');
}
}
});
}
Simple eh? Đây là mã Php tôi:
echo '_POST='.var_export($_POST,true)."\n";
Và đây là kết quả:
_POST=array (
)
jQuery1710713708313414827_1329923973282(...)
Nếu tôi thay đổi mảng trống rỗng bởi một tổ chức phi rỗng, ví dụ:
'tab':new Array({ 't':'u' },{ 'v':'w' })
Kết quả là:
_POST=array (
'tab' =>
array (
0 =>
array (
't' => 'u',
),
1 =>
array (
'v' => 'w',
),
),
)
jQuery1710640656704781577_1329923761425(...)
Vì vậy, điều này rõ ràng có nghĩa là khi có một mảng rỗng() trống được gửi đi, nó bị bỏ qua và nó không được thêm vào các biến POST.
Tôi có thiếu gì đó không?
PS: phiên bản jQuery của tôi là từ mới nhất google CDN ví dụ:
http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
và
http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js
Tôi muốn mảng được gửi đi, ngay cả khi nó rỗng (= gửi []
)! Bất kỳ giải pháp nào? Bất kỳ ý tưởng? Tôi đã cố gắng thêm tùy chọn này traditional: true
mà không thành công.
bạn đã nghĩ về sendin g một biến riêng biệt có chứa chiều dài của mảng? Khi độ dài bằng không, mảng trống. Bạn có thể sử dụng kiểm tra này thay vì cố gắng tính đến biến mảng bị thiếu trong bài đăng. – tvanfosson
'dữ liệu: {'tab': []},' – Vytautas
@Vytautas: Tương tự. –