0

I am trying to get a *.srt file and parse it with this script: Parse a SRT file with jQuery Javascript.

I've got a problem with the AJAX call blocking rest of the JS code. I tried to add syncs, set timeout, I wrapped it into a setTimeout function, tried with another *.srt file, but still it's not working. It doesn't throw error, it alerts end dialog, parsed lines are stored in variable but another scripts are frozen.

var subtitles = [];
$.ajax({
  method: "GET",
  url: '{% static "file.srt" %}',
  async: true,
  error: function(data) {
    alert("error");
  },
  success: function(data) {
    function strip(s) {
      return s.replace(/^\s+|\s+$/g, "");
    }
    srt = data.replace(/\r\n|\r|\n/g, '\n');
    srt = strip(srt);

    var srt_ = srt.split('\n\n');
    var cont = 0;

    for (s in srt_) {
      st = srt_[s].split('\n');

      if (st.length >= 2) {
        n = st[0];

        i = strip(st[1].split(' --> ')[0]);
        o = strip(st[1].split(' --> ')[1]);
        t = st[2];

        if (st.length > 2) {
          for (j = 3; j < st.length; j++)
            t += '\n' + st[j];
        }

        //define variable type as Object
        subtitles[cont] = {};
        subtitles[cont].number = n;
        subtitles[cont].start = i;
        subtitles[cont].end = o;
        subtitles[cont].text = t;

        document.body.innerHTML += " (" + subtitles[cont].start + " - " + subtitles[cont].end + " ) " + subtitles[cont].text + "<br>";

      }
      cont++;
    }
    alert("end");
  },
  timeout: 2000,
});

Please help me.

Rory McCrossan
  • 331,213
  • 40
  • 305
  • 339

0 Answers0