admin管理员组

文章数量:1291103

I am passing the posts result of a query to JS so it can render the data in a select. Before I send out the result like this:

return new \WP_REST_Response( $return_data, 200 );

I checked the array in PHP an it yields the following, which is fine (sorted by name)

array(8) {
  [1489]=>
  string(3) "Gus"
  [1499]=>
  string(3) "Mia"
  [1479]=>
  string(4) "Odin"
  [1488]=>
  string(5) "Pablo"
  [1490]=>
  string(8) "Salvator"
  [1491]=>
  string(6) "Scooby"
  [1492]=>
  string(5) "Snowy"
  [1485]=>
  string(6) "Wesley"
}

In my JS, I have the following code:

this.request = $.ajax({
  url: `${homeURL}/wp-json/mdr/v1/${animalType}`,
  type: 'get',
  dataType: 'json',
  success: function (result) {
    console.log(result);

Which prints the following:

Object {
  1479: "Odin",
  1485: "Wesley",
  1488: "Pablo",
  1489: "Gus",
  1490: "Salvator",
  1491: "Scooby",
  1492: "Snowy",
  1499: "Mia"
}

Why is the array converted to an object sorted by the ID instead of the order that I passed it from PHP?

I am passing the posts result of a query to JS so it can render the data in a select. Before I send out the result like this:

return new \WP_REST_Response( $return_data, 200 );

I checked the array in PHP an it yields the following, which is fine (sorted by name)

array(8) {
  [1489]=>
  string(3) "Gus"
  [1499]=>
  string(3) "Mia"
  [1479]=>
  string(4) "Odin"
  [1488]=>
  string(5) "Pablo"
  [1490]=>
  string(8) "Salvator"
  [1491]=>
  string(6) "Scooby"
  [1492]=>
  string(5) "Snowy"
  [1485]=>
  string(6) "Wesley"
}

In my JS, I have the following code:

this.request = $.ajax({
  url: `${homeURL}/wp-json/mdr/v1/${animalType}`,
  type: 'get',
  dataType: 'json',
  success: function (result) {
    console.log(result);

Which prints the following:

Object {
  1479: "Odin",
  1485: "Wesley",
  1488: "Pablo",
  1489: "Gus",
  1490: "Salvator",
  1491: "Scooby",
  1492: "Snowy",
  1499: "Mia"
}

Why is the array converted to an object sorted by the ID instead of the order that I passed it from PHP?

Share Improve this question asked Jun 7, 2021 at 1:35 csaboriocsaborio 1122 silver badges13 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

Fix by using:

return new \WP_REST_Response( \json_encode( $return_data), 200 );

本文标签: javascriptWhy does my array sort order changes when I pass it to JS using WPRESTResponse