Laravel AJAX Почтовый массив становится пустым на сервере - PullRequest
3 голосов
/ 09 января 2020

В моем посте AJAX есть два массива. Один работает всегда, другой становится пустым на сервере. Перед отправкой они выглядят одинаково для меня, поэтому я очень озадачен, почему он не работает.

Массив A, который работает всегда console.log():

0: "content_description_back_button"
1: "search_city_no_results"

Массив B, который становится пустым console.log():

search_city_no_results_x: "No results. Please change your search query"
content_description_back_button_xxx: "back"

Код POST:

$.ajax({
    url : '/home/update_xml',
    type : "post",
    data : {'new_keys': array_B, 'deactivate_keys': array_A},
    success : function(response) {
        console.log("update_xml", response);    
    },
    error : function(xhr) {
        console.log("update_xml", xhr);
    }
});

Сервер \Log::info($data->new_keys);:

Просто пустая строка, ничего.

Сервер \Log::info($data->deactivate_keys);:

array (
  0 => 'content_description_back_button',
  1 => 'search_city_no_results',
)

Что я сделал до сих пор:

Я перепробовал множество различных синтаксических комбинаций для сообщения AJAX.

Примеры:

contentType: 'application/json;charset=UTF-8',
dataType: "json",
data : JSON.stringify({'new_keys': array_B, 'deactivate_keys': array_A})

Я пробовал contentType -> ContentType

Я пробовал разные комбинации, но результаты всегда одинаковы. Массив А работает всегда. Массив B на сервере пуст.

В console.log() они выглядят одинаково для меня. Они оба представлены в виде массива.

1 Ответ

0 голосов
/ 09 января 2020

array_B должен быть обработан как словарь в JS.

Перед заполнением он выглядел так:

array_b=[];

Но он должен выглядеть следующим образом:

array_b={};

Очень простое исправление. Я держу вопрос открытым. Может быть, у кого-то будет похожая проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...