Domyślne kodowanie POST
jest multipart/form-data
, która składa się z płaskiej serii name=value
parami.
Twoja struktura nie może być odwzorowana bezpośrednio na płaską serię par name=value
, ponieważ jest złożona. Masz element, który jest obiektem, który ma właściwość odnoszącą się do tablicy.
Jeśli chcesz wysłać dowolnie złożoną strukturę, musisz użyć innego kodowania i upewnić się, że serwer rozumie kodowanie. Na przykład możesz wysłać JSON lub XML do serwera, ale musisz powiedzieć, że to właśnie robisz, ustawiając właściwość contentType
na metodzie ajax
(która określa typ wysyłanych danych do na serwerze). Wtedy twój serwer musi zrozumieć, jak deserializować ten JSON lub XML.
Co jakiś czas upewnij się, że twoja struktura może zostać odwzorowana na płaską serię par name=value
.
Pół sposób dom jest do przesyłania danych jak multipart/form-data
, ale gdzie można wysłać pojedynczą name=value
parę i mają value
część być inna kodowania, tak:
$.ajax({
url: ajaxUrl,
dataType: 'json',
type: 'POST',
data: {json: JSON.stringify(data)},
success: function(json){
}
});
który wysyła pojedynczy name=value
parę o nazwie json
, gdzie wartość jest łańcuchem zakodowanym w JSON. Twoja strona serwera pobierze wartość parametru json
w normalny sposób, a następnie użyje deserializatora JSON do odtworzenia wykresu obiektów.
Ta technika w połowie drogi jest czasami przydatna w frameworkach, które utrudniają użycie czegoś innego niż standardowe kodowanie żądań.
Po prostu powoduje, że wysyła "' [Obiekt obiektu] "jako wartość, mało przydatny. –