JQuery getJSON бросает: «Не удалось загрузить ресурс: отменено» в Safari - PullRequest
1 голос
/ 09 февраля 2011

Я нашел несколько сообщений (здесь и в Интернете) по этой проблеме и безуспешно пробовал предложенные решения, но в первоначальной проблеме были некоторые различия. Мой пример кажется очень простым, поэтому я хотел бы получить некоторую информацию по этому вопросу. Вот код:

theURI = "https://<?= $_SERVER['HTTP_HOST'] ?>/validate.php";
theData = {
    'validationType' : 'login',
    'ident' : document.getElementById("login_ident").value,
    'password' : document.getElementById("login_pw").value,
    'loginTries' : <?= $loginTries ?>
}
$.getJSON(theURI, theData, function() {alert('Success!')});

Успех! предупреждение отображается нормально, но ошибка « Не удалось загрузить ресурс: отменено » мигает через консоль ошибок. «validate.php» выглядит следующим образом (часть кода сервера для ясности опущена), предположим, что все переменные в основном являются допустимыми значениями:
<?php</code>
echo '{';
echo '"result" : "' . $login_success . '",';
echo '"loginTries" : "' . $loginTries . '",';
echo '"feedback" : "' . $loginFeedback . '",';
echo '"feedbackClass" : "' . $loginTextClass . '",';
if($login_success) {
    echo '"userData" : {';
    $firstPass=true;
    foreach ($g_aUserData as $theKey => $theValue) {
        if(!$firstPass) echo ","; else $firstPass=false;
        echo '"' . $theKey . '" : "' . $theValue . '"';
    }
    echo '}';
}
echo '}';
?>

Что генерирует (пример данных, конечно):


{"result" : "1","loginTries" : "0","feedback" : "SUCCESSFUL LOGIN!","feedbackClass" : "login_text","userData" : {"firstName" : "Gomez","memberID" : "39203","lastName" : "Aadams","lastLogin" : "","message" : "","credHash" : "3baf7a67271ecfd93kdsid33s2a65c16a9413f652"}}

Что переформатирует в:

{
    "result" : "1",
    "loginTries" : "0",
    "feedback" : "SUCCESSFUL LOGIN!",
    "feedbackClass" : "login_text",
    "userData" : {
        "firstName" : "Gomez",
        "memberID" : "39203",
        "lastName" : "Aadams",
        "lastLogin" : "",
        "message" : "",
        "credHash" : "3baf7a67271ecfd93kdsid33s2a65c16a9413f652"
    }
}

Есть идеи? Я пробовал:

1) Загрузка данных в строку запроса и полное отсутствие параметра данных.
2) Изменение вызова на относительное.
3) Изменение «https» на «http».

ОБНОВЛЕНИЕ : ОК. Основываясь на комментариях, я заплатил свой глупый налог и заставил код генерировать данные JSON без каких-либо обрезок HTML. Странно, но я все еще получаю такую ​​же ошибку. Попробовал те же исправления, что и выше, все еще не работает.

1 Ответ

2 голосов
/ 10 февраля 2011

Итак, оказывается, что проблема не имела ничего общего с вызовом ajax, а с формой (которая была преобразована в Ajax), которая использовалась для входных данных.Как только я добавил в форму «return false», все прояснилось.

Но я должен сказать спасибо, что в один прекрасный день напомнил мне, как работает AJAX (это было какое-то время с тех пор, как я кодировал).Конечно, прежде чем подготовить вопрос, я смог найти еще несколько ошибок до публикации, так что в целом простое задание вопроса очень помогло.

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