2014-08-23 3 views
0

Я получаю JSON от PHP и используя его в JavaScript, чтобы установить значение опции Box Box. Но когда я помещаю свой PHPJSON в JavaScript Сортировка автоматически.PHP json автоматически сортирует в JavaScript

Этого не должно быть сделано.

На самом деле я использую это JSON как HTML select Значение опциона коробки и мне нужны мои исходные данные как поступающие со стороны PHP.

JSON Исходя из PHP стороны:

PHP КОД:

$optionJSON= json_encode($optionValues); 

Результат:

{ 
    "0":"Select", 
    "37":"Abc", 
    "47":"DEF", 
    "359":"GHI", 
    "182":"JKL", 
    "360":"MNO", 
    "183":"PQR", 
    "320":"STU", 
    "38":"VWX", 
    "80":"YZA" 
} 

Отображение в браузере консоли и тот же порядок в Select Box Значение параметра.

{ 
    "0": "Select", 
    "37": "Abc", 
    "38": "VWX", 
    "47": "DEF", 
    "80": "YZA", 
    "182": "JKL", 
    "183": "PQR", 
    "320": "STU", 
    "359": "GHI", 
    "360": "MNO" 
} 
+0

Это не регулируется поведением ** ECMA **. Вы не можете полагаться на независимость от этого браузера. %) p – loveNoHate

+1

Порядок элементов в объекте не указан, и нет никакого способа его контролировать. Если вы хотите, чтобы значения оставались в определенном порядке, используйте массив. – Barmar

+0

@Barmar Пожалуйста, дайте мне пример –

ответ

1

Вы передаете объект JSON вокруг, внутри экземпляра объекта вы не можете полагаться на порядок элементов.

Использование массива вместо или дать каждому объекту какой-то порядок сортировки и сортировки списка на клиенте ...

var x = [ 
    {"0":"Select"}, 
    {"37":"Abc"}, 
    {"47":"DEF"}, 
    {"359":"GHI"}, 
    {"38":"VWX"} 
]; 
+1

JSON исходит из PHP, поэтому было бы лучше показать синтаксис PHP этих данных. – Barmar

+0

проблема такая же –

1

Возвращает массив как это:

$result = array(
    array('value' => 0, 'text' => 'Select'), 
    array('value' => 37, 'text' => 'Abc'), 
    array('value' => 47, 'text' => 'DEF'), 
    array('value' => 359, 'text' => 'GHI'), 
    array('value' => 182, 'text' => 'JKL'), 
    array('value' => 360, 'text' => 'MNO'), 
    array('value' => 183, 'text' => 'PQR'), 
    array('value' => 320, 'text' => 'STU'), 
    array('value' => 38, 'text' => 'VWX'), 
    array('value' => 80, 'text' => 'YZA') 
); 
echo json_encode($result); 

Когда я это, выход:

[{"value":0,"text":"Select"},{"value":37,"text":"Abc"},{"value":47,"text":"DEF"},{"value":359,"text":"GHI"},{"value":182,"text":"JKL"},{"value":360,"text":"MNO"},{"value":183,"text":"PQR"},{"value":320,"text":"STU"},{"value":38,"text":"VWX"},{"value":80,"text":"YZA"}] 

Когда я копирую, что Javascript и использовать JSON.parse(), результат находится в желаемом порядке. См. http://jsfiddle.net/barmar/8ypzvhku/1/

+0

Извините Mr. Barmar Проблема такая же .. :( –

Смежные вопросы