Я получил следующий ответ JSON со стороны моего сервера —
echo json_encode(array("result"=>"success", "networks" => $adNetworkListFinal));
Где, на примере, $ adNetworkListFinal имеет следующее значение —
Array
(
[-3] => Native Test
[143] => conf native template
[142] => test native
)
Примечание — индекс -3 является первым. Да, это отрицательный целочисленный индекс, который я должен использовать здесь.
Но на стороне клиента, когда я пересекаю ответ с помощью .each (), я получаю элемент с индексом -3
наконец —
Код
$.ajax({
type: "POST",
url: posturl,
data : data,
dataType: "json",
async: false,
success: function(msg){if (msg.result == "success")
{
$.each(msg.networks,function(key,val)
{
console.log("check "+key);
});
}
});
Выход
check 142
check 143
check -3
Я не уверен, что вызывает изменение в порядке (элемент с индексом -3, наконец, становится доступным) и как это исправить.
Массивы не могут иметь отрицательные индексы, поэтому вы создаете объект JSON (и, следовательно, объект JavaScript).
JSON и JavaScript объекты неупорядоченный так что вы возвращаете свойства в любом порядке, в котором движок JS хранит их.
Поскольку значения являются числовыми, вы можете вытянуть их в массив (как значения, а не как индексы) и отсортировать их, прежде чем использовать их для доступа к значениям исходного объекта.
Других решений пока нет …