Функция atwho (), использующая at.js, не работает в ajax - PullRequest
0 голосов
/ 06 июня 2018

Я создал собственный плагин jquery, используя at.js, как это,

(function ($) {

$.fn.mention = function (options) {

    var defaults = {
        at: "@",
        dataType: "json",
        source: "",
        data: {}
    };

    var settings = $.extend({}, defaults, options);

    $.ajax({
        url: settings.source,
        data: settings.data,
        dataType: settings.dataType,
        method: "POST",
        success: function (result) {
            if (result.success) {
                $(this).atwho({
                    at: settings.at,
                    data: result.data
                });
            }
        }
    });

};
})(jQuery);

Я использую плагин, как это,

$('#textbox').mention({
    source: "<?php echo_uri("..some_links"); ?>",
    data: {some_data: some_data_value}
});

И данные об успехе ajax,создать точный массив JSON, который мне нужен.Здесь я хочу упомянуть, что если я добавляю данные вручную в atwho (), это работает без сбоев.Но этот метод не работает.

Пожалуйста, предоставьте любое решение.

Заранее спасибо.

1 Ответ

0 голосов
/ 06 июня 2018

Внутри обратного вызова, я думаю, этот указатель больше не ссылается на ваш элемент, если вы не укажете свойство context :

$.ajax({
   ...
   context: this,

Затем в обратном вызове это будет относиться кобъект jQuery, представляющий плагин.ИЛИ, вне ajax определите переменную:

var that = this; //that can be accessed by your callback
$.ajax({
  ..,
  success: function(..) {
     $(that).atwho(..);
  }

Обе опции должны работать.

...