У меня есть приложение, использующее jquery 2.0.3 и серверную часть CakePHP 2.x. Это устаревшее приложение, поэтому мы используем эти версии.
Часть приложения имеет <select id="orderTags">
, который при изменении запускает ajax-запрос к конечной точке /get_tags
. Это возвращает JSON-кодированный ответ, который затем используется для обновления некоторых элементов списка в элементе с именем #tags
.
Код для выполнения запроса работает, прослушивая изменения #orderTags
:
$('#orderTags').change(function() {
var order = $('#orderTags option:selected').val();
$("#tags ul").html('');
get_tags(order);
});
Затем выполняется get_tags()
и передается строка для упорядочения, которая устанавливается следующим образом:
- Порядок добавлен по дате (имя:
"date"
)
- Заказ по названию ASC (имя:
"name_asc"
)
- Заказ по названию DESC (имя:
"name_desc"
)
Я вижу в своем браузере вкладку Сеть, что запросы выполняются к соответствующей конечной точке - с присвоением статуса 200 - и передачей соответствующей строки в качестве параметра $_GET
:
/get_tags?orderby=date
/get_tags?orderby=name_asc
/get_tags?orderby=name_desc
При просмотре Ответа на вкладке Моя сеть конечная точка выдает правильный (т. Е. Разный порядок в каждом случае) JSON. Например, скриншоты ниже, поэтому ответ из (2) и (3) выше, и, как вы можете видеть, порядок в алфавитном порядке:
![enter image description here](https://i.stack.imgur.com/FQ2mZ.png)
![enter image description here](https://i.stack.imgur.com/w0wzt.png)
Я использую функцию $.each
в jquery для циклического прохождения ответа. Ниже приведен код внутри get_tags()
, указанный выше:
function get_tags(order) {
order = order || "date";
$.ajax({
url: '/get_tags',
dataType: 'json',
data: {'orderby': order},
cache: false
}).done(function (data) {
console.log(data);
var items = '';
$.each(data, function (key, val) {
items += '<li id="tag-' + key + '"><i class="fa-li fa fa-tags"></i>' + val + '</li>';
});
$("#tags ul").append(items);
});
console.log(data)
дает другой вывод на ответ от сценария. Я использовал cache: false
и вижу, что jquery добавляет параметр _
в URL.
Так, например, я разместил вывод console.log
из 2 приведенных выше снимков экрана. В каждом случае представлены одни и те же данные - в совершенно неверном порядке:
![enter image description here](https://i.stack.imgur.com/WT2AL.png)
![enter image description here](https://i.stack.imgur.com/hrVh5.png)
Почему это происходит?