2015-10-15 56 views
0

我有一個列表的關聯數組。看看下面的JSON:AJAX:如何發佈空數組?

console.log(JSON.stringify(fields); 

輸出

{ 
    "sb1":[], 
    "sb2":["val1","val2","val3"], 
    "sb3":["val1","val2","val3"] 
} 

正如你所看到的,陣列的條目 「SB1」 是空的。陣列「sb1」消失,同時發佈var「fields」到PHP。

下面是一個代碼片段:

$(document).ready(function() { 
    $("#button").click(function(e) { 
    e.preventDefault(); 
    var fields = {}; 
//The following saves selectboxes and options in var fields// 
    $("select").each(function() { 
     var $select = $(this); 
     fields[$select.attr('name')] = $select.find('option').map(function() { 
     return $(this).val(); 
     }).get(); 
    }); 

    var jsonObj = fields; 
    var jsonStringify = JSON.stringify(fields); 
    console.log("JSON.stringify(fields): " + jsonStringify); 
//Result is OK 

    $.ajax({ 
     url: "saveJson.php", 
     type: "post", 
     data: { jsonStringify : jsonStringify }, 
     success: function (response) { 
     console.log("data transmitted: " + response); 
//Response doesnt transmit empty arrays! 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
     console.log(textStatus, errorThrown); 
     } 
    }); 
    }); 
}); 
+1

如果'JSON.stringify'包含所有內容,jQuery肯定會發送所有內容,因爲它不能更改字符串。這是您使用的服務器端代碼,並不理解空數組。 – adeneo

+0

所以我應該看看PHP腳本,對吧?該死,我有點笨......謝謝!請把它寫成答案,我將其標記爲解決方案 – Chpo7234

+0

我認爲這是PHP解釋表單的方式,空值不包括在內 – adeneo

回答

1

你的JavaScript代碼發送空數組。如果你想在請求的響應中有空數組,你必須修改你的服務器的代碼。