JQuery AJAX работает на мобильном сафари, но не в UIWebView?

У меня есть базовая функция jQuery ajax для входа пользователя через UIWebView. Однако по какой-то причине он возвращает пустое значение, когда оно находится в UIWebView. Он отлично работает в мобильных сафари, а хром и firefox на моем компьютере.

Здесь мой код:

$("#login_button").live('click',function() {
        var serializeme = $("#login_form").serialize();
        alert(serializeme);
        $.ajax({
            type: "POST",
            url: "http://domain/location/process_login.php",
            data: serializeme,
             success: function(theRetrievedData) {
                var thePlace = theRetrievedData.indexOf("?!?success?!?");
                if (thePlace != -1) {
                    var theArray = theRetrievedData.split("?!?success?!?");
                    var theUrl = theArray[1];
                    $('#content').fadeOut(500);
                    setTimeout( function() {window.location = theUrl;}, 500 );
                } else {
                    alert(theRetrievedData);
                    alert("no bueno");
                }
             }
        });
    });

theRetrievedData просто возвращает пустое предупреждение.

Пожалуйста, помогите!

PS: приложение называется "Dudles" в магазине приложений (оно бесплатно), если вы хотите попробовать войти в систему. Вы получите пустое сообщение из предупреждения.

Ответ 1

Вы также можете опубликовать свой PHP-код?

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

$(document.body).on('click', '#login_button', function () {
    $.ajax({
        type: "POST",
        url: "http://domain/location/process_login.php",
        data: $(this).closest('form').serialize(),
        success: function (response) {
            var delimiter = "?!?success?!?";
            var isSuccessful = response.indexOf(delimiter) !== -1;

            if (!isSuccessful) {
                // handle error
                return;
            }

            $('#content').fadeOut(500, function () {
                location = response.split(delimiter)[1];
            });
        }
    });
});

Ответ 2

попробуйте отправить запрос ajax с помощью async: true, например:

$("#login_button").live('click',function() {
    var serializeme = $("#login_form").serialize();
    alert(serializeme);
    $.ajax({
        type: "POST",
        async:true,
        url: "http://domain/location/process_login.php",
        data: serializeme,
         success: function(theRetrievedData) {
            var thePlace = theRetrievedData.indexOf("?!?success?!?");
            if (thePlace != -1) {
                var theArray = theRetrievedData.split("?!?success?!?");
                var theUrl = theArray[1];
                $('#content').fadeOut(500);
                setTimeout( function() {window.location = theUrl;}, 500 );
            } else {
                alert(theRetrievedData);
                alert("no bueno");
            }
         }
    });
});