случайные значения массива в AJAX POST - PullRequest
0 голосов
/ 22 февраля 2019

пробирался сквозь стену, чтобы понять, как получить согласованные результаты с помощью следующего кода ... Я в основном хочу запустить 2 массива одинакового размера для поиска и замены по всему сайту через API, но код, похоже,пробегать случайные значения массива - иногда он запускает первое значение дважды или будет проходить через все 4 значения для поиска и замены - это никогда не будет прежним ... У кого-нибудь есть идеи, как я могу исправить этот код илиесть лучший способ кодировать это?Извините, если мне неясно ...

var searchid;
var origArray;
var suggArray;
var orig = new Array();
var sugg = new Array();
var params;

orig = ["originalVal1", "originalVal2", "originalVal3", "originalVal4", "originalVal5", "originalVal6"];

sugg = ["replaceVal1", "replaceVal2", "replaceVal3", "replaceVal4", "replaceVal5", "replaceVal6"];

var counter = 0;

function getData() {

  if (counter === orig.length) {
    counter = 0;
  }

  gadget.ready().then(gadget.fetch).then(function() {

    params = {
      authorization_token: gadget.token,
      replace: true,
      path: "/mypath/aboutus/timelineGallery.pcf",
      site: "www",
      srchstr: orig[counter],
      rplcstr: sugg[counter]
    };

    $.ajax({
      async: true,
      type: "POST",
      url: "http://myapi/sites/findreplace",
      data: params,

      success: function(data) {

        searchid = data.id;

        $('p').append(searchid).append('<br />');

        counter++;
        if (counter < orig.length) getData();
      }
    });

  });
}

1 Ответ

0 голосов
/ 22 февраля 2019

Когда вы устанавливаете async:true, вызов ajax будет выполняться асинхронно, поэтому значение переменной counter может не обновляться при следующем вызове.Вы можете установить async: false или получить счетчик успеха ajax, как показано ниже:

counter = function () {
    var tmp = null;
    $.ajax({
        async: true,
        type: "POST",
        url: "http://myapi/sites/findreplace",
        data: params,
        'success': function (data) {
         searchid = data.id;

         $('p').append(searchid).append('<br />');

         tmp=counter++;
        }
    });
    return tmp;
}();
if (counter < orig.length) getData();

Примечание () во второй последней строке.

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