JQuery AJAX не работает на iPhone сафари - PullRequest
0 голосов
/ 15 мая 2018

Итак, я делаю Ajax-вызов с использованием jQuery, и он отлично работает во всех браузерах на настольных компьютерах и в Chrome на Android, однако он не работает в Safari на iOS, идеи?

$(document).ready(function(){
  (function($){
      function processForm( e ){
        var callid = $('.callid').val();
        var pin = $('.pin').val();
        var urlFinal = callid+'/'+pin;
          $.ajax({
              url: 'http://URLHERE/getHash/' + urlFinal,
              dataType: 'text',
              type: 'get',
              contentType: 'application/x-www-form-urlencoded',
              success: function( data, textStatus, jQxhr ){
                    var urlResponse = JSON.parse(data);
                    console.log("WORKS! " + urlResponse.streamFileUrl);
                    $('.overlay').show();
                    playVideo(urlResponse);

              },
              error: function( jqXhr, textStatus, errorThrown ){
                  console.log('INCORRECT DETAILS ');
                  $('.incorrect').show()
              }
          });
          e.preventDefault();
      }
      $('#form').submit( processForm );

  })(jQuery);

})

1 Ответ

0 голосов
/ 15 мая 2018

По крайней мере, разверните ваш код из лишнего обработчика дополнительной нагрузки, только в редких случаях вам нужен IIFE внутри обработчика нагрузки

$(document).ready(function(){  // load handler 
  (function($){  // remove

переместите warnDefault туда, где остановка отправки, если остальная часть кода завершается сбоем, и удалите ненужный мусор:

dataType: 'text', // jQUery will figure this out based on response
type: 'get', // default
contentType: 'application/x-www-form-urlencoded', // only needed for POST

var urlResponse = JSON.parse(data); // if text is left out, JSON is returned 

Вот более короткая и чистая версия

$(function() { // shorter version of $(document).ready(function
  $('#form').on("submit", function(e) {
    e.preventDefault(); // belongs HERE
    var callid = $('.callid').val();
    var pin = $('.pin').val();
    var urlFinal = callid + '/' + pin;
    $.ajax({
      url: 'http://URLHERE/getHash/' + urlFinal,
      success: function(data, textStatus, jQxhr) {
        console.log("WORKS! " + data.streamFileUrl); // is already JSON
        $('.overlay').show();
        playVideo(urlResponse);
      },
      error: function(jqXhr, textStatus, errorThrown) {
        console.log('INCORRECT DETAILS ');
        $('.incorrect').html(errorThrown).show()
      }
    });
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...