mamy problem z wbudowaną przeglądarką na Androida 4.0, 4.1 i 4.2 (nie mamy nic niższego do przetestowania). Problem polega na tym, że wywołanie ajaxa działa idealnie przy pierwszym ładowaniu, możesz nacisnąć przycisk Ajax tak długo, jak chcesz i wszystko będzie dobrze. Możesz odłączyć się od internetu i będzie działać poprawnie. Ale jeśli wyjdziesz (W PEŁNI, upewnij się, że nie działa tylko w tle), a następnie uruchom go ponownie, uruchomi się on po wczytaniu i naciśnięciu przycisku. Nie ma znaczenia, czy jesteś online, czy offline. Błąd, który został zwrócony z wywołania ajax, to "Błąd" o statusie = 0 i readyState = 0.
Po pomyślnym otrzymaniu wiadomości zwrotnej "odpowiedz z Ajax Call" o statusie = 200 i readyState = 4.Problem z przeglądarką internetową z jQuery Ajax i kiedy używany jest appcache
Kod działa we wszystkich innych przeglądarkach testowanych w systemach Android Chrome, Firefox i Opera. na IOS 5 i 6 działa i każda przeglądarka na komputerze, którą możemy znaleźć. Czy jest coś, czego mi brakuje lub znaleźliśmy błąd w wbudowanej przeglądarce. Jakakolwiek pomoc w tej sprawie byłaby doceniona, zwłaszcza jeśli to po prostu coś głupiego zrobiłem.
Stworzyliśmy skrypt testowy, który dobrze ilustruje ten problem. Załączam go na końcu tej wiadomości.
Dzięki
Tim
test.php
<?php
function displayPage() {
?>
<!DOCTYPE html>
<html manifest="test.manifest" debug="true">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" >
<title>test</title>
<script type="text/javascript" src="jquery-1.9.0.min.js"></script>
<script type="text/javascript">
function runAjaxGet() {
var XMLHttpRequest = $.ajax({
url: "test.php",
dataType: "json",
data: "test=test",
traditional: "true",
success: function(responseData) {
alert('good\n responseData: '+responseData+ '\n res:' + XMLHttpRequest.responseText +'\n readyState: '+ XMLHttpRequest.readyState + '\n Status: '+XMLHttpRequest.status);
console.log(XMLHttpRequest);
},
error: function (xhr, ajaxOptions, thrownError, responseData) {
alert('bad\n responseData: '+responseData+ '\n res:' + XMLHttpRequest.responseText +'\n readyState: '+ XMLHttpRequest.readyState + '\n Status: '+XMLHttpRequest.status);
console.log(XMLHttpRequest);
}
});
}
$(document).ready(function() {
runAjaxGet();
});
</script>
</head>
<body>
<button Name="Run Ajax" onclick="runAjaxGet();">Run Ajax</button>
</body>
</html>
<?php
}
function processRequests() {
header("Content-Type: application/json; charset=UTF-8");
echo (json_encode("respose from Ajax Call"));
}
date_default_timezone_set ("UTC");
if (isset($_REQUEST['test'])) {
$which = $_REQUEST['test'];
} else {
$which = '';
}
switch ($which) {
case "test":
processRequests();
break;
default :
displayPage();
break;
}
?>
test.manifest
CACHE MANIFEST
test.php
jquery-1.9.0.min.js
test.php?test=test