Использование функции в качестве второго параметра в данных ajax - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь назвать имя пользователя, которому разрешено писать новости в этой конкретной категории, и я использую плагин select2, поскольку над одной и той же новостью может работать несколько писателей. Поэтому, когда я выбираю категорию, в поле опций select2 должны отображаться имена пользователей.

Пока что я сделал следующее:

$("#news_category").change(function() {
  var CatId = $("#news_category option:selected").attr('value');

  $("#multipleSelect").select2({
    ajax: {
      url: "/process/categoryUsers.php",
      type: "post",
      dataType: 'json',
      delay: 250,
      data: {
        id: CatId
      }, function(params) {
        return {
          searchTerm: params.text
        };
      }
      },
      processResults: function(response) {
        console.log(response)
        return {
          results: response
        };
      },
      cache: true
    }
  });

В журнале я вижу данные, которые ожидаю увидеть, но их нет в опции плагина select2. Я чувствую, что я делаю что-то не так в data: .... Я получаю списки пользователей с CatId, в котором я передаю идентификатор в качестве первого параметра, а также функцию в качестве второго, которая выдает списки пользователей, когда я нажимаю на поиск плагина select2

Я ожидаю получить списки тех же пользователей, что и в консоли.

Примечание: Я получаю данные в символе Unicode

Обновление: #news_category - это еще одно поле выбора, в котором не используется плагин select2, поэтому при событии изменения я получаю идентификатор категории, который входит в выбранную опцию, которую я назначил в CatId для выборки пользователей. Предположим, я получил 1 в переменной CatId, я передаю этот CatId в качестве параметра для выборки пользователей, которым разрешено писать новости в идентификаторе категории 1. Как я уже сказал, я получаю ожидаемое значение в журнале консоли, который я просто хочу показать их в выпадающем списке.

1 Ответ

0 голосов
/ 28 июня 2019

Как я уже сказал в своем комментарии, я чувствую, что вы делаете что-то не так в data. Чтобы передать контроллеру возврат из функции, я бы сделал это.

function Getparam (params) {
    return {
      searchTerm: params.text 
    };

}

и затем в данных сделать:

`data: {id: CatId, param: Getparam(params)}`

Это передает и id, и любой другой параметр в json

РЕДАКТИРОВАТЬ: Похоже, вы просто хотите вернуть текст выпадающего, да?

Вы можете просто сделать это вместо того, чтобы использовать какие-либо параметры:

var ddtext = $("#news_category option:selected").text();

, а затем в data есть data: {id: CatId, text: ddtext}

РЕДАКТИРОВАТЬ 2: Чтобы установить значения другого раскрывающегося списка, вы можете использовать разметку ниже.

        //Create a markup for a select
        var markup = "<option Value='0'>Select option</option>";

        //Populate the markup
        for (var i = 0; i < result.length; i++) {
            markup += "<option Value=" + result[i].Value + ">" + result[i].Text + "</option>";
        }

        //Populate dropdown with value
        $("#//DROPDOWNLIST ID").html(markup).show();

ПРИМЕЧАНИЕ. Это HTML-разметка. Это будет находиться в success или в вашем случае processResults вашего вызова ajax и заполнит раскрывающийся список данными, переданными обратно в ответе processResults

...