Почему мой код jQuery не работает в Firefox и Chrome? - PullRequest
0 голосов
/ 30 марта 2011

EDITED

Привет, я использую masterpage. И я использую формы аутентификации в моем проекте. Я извлекаю свои данные из SQL Server 2005. Затем в login.aspx я вызываю метод страницы из jQuery. В конце концов, я запускаю свой проект в IE9.0, Chrome и Firefox. Проект правильный. Но этот код JQuery работает только IE9.0.

Мой метод страницы, который называется LoginService, возвращает «0» или returnURL, как «user / Default.aspx», тогда я управляю этим тегом, если возвращение LoginService не равно «0», при успешном выполнении будет выполнено следующее:

alert("there isnt error: " + msg.d);

но, если возникнет ошибка, запустится:

alert("there is error: " + msg.d);

Очень интересно, что

если я запустил этот проект в IE9, появится сообщение «ошибка отсутствует: user / Default.aspx»

но

если я запускаю этот проект в Chrome или Firefox, отображается сообщение «есть ошибка: не определено»

как мне запустить этот проект во всех браузерах?

<script type="text/javascript">
  jQuery(document).ready(function () {
    jQuery("#myContent_login").focus();
    jQuery("#myContent_submit_image").click(function () {
      jQuery("#login_form_spinner").show();
      jQuery.ajax({
        type: "POST",
        url: "Logon.aspx/LoginService",
        data: "{'username': '" + jQuery("#myContent_login").val() + "', 'password': '" + jQuery("#myContent_password").val() + "','isRemember': '" + jQuery("#myContent_remember_me").is(':checked') + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
          if (msg.d != 0) {
            alert("there isnt error: " + msg.d);
          }
        },
        error: function (msg) {
          alert("have error: " + msg.d);
        }
      });
    });
  });
</script>

Ответы [ 5 ]

1 голос
/ 30 марта 2011

Просто быстрое наблюдение:

JQuery ( 'login_form_spinner')

вам нужно # или . перед login_form_spinner.

Обновление:

Вы можете посмотреть здесь в качестве примера. Обратите внимание, что функции success и erro отличаются от ваших примеров.

Я могу помочь больше, но мне нужно знать конкретную ошибку.

0 голосов
/ 30 марта 2011

Убедитесь, что вы вернули false из обработчика щелчков, чтобы отменить отправку по умолчанию:

jQuery("#myContent_submit_image").click(function () {

    jQuery('#login_form_spinner').show();
    jQuery.ajax({
        type: "POST",
        url: "Logon.aspx/LoginService",
        data: "{'username': '" + jQuery("#myContent_login").val() + "', 'password': '" + jQuery("#myContent_password").val() + "','isRemember': '" + jQuery("#myContent_remember_me").is(':checked') + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            if (msg.d != 0) {
                window.location.replace(msg.d);
            }
        },
        error: function (msg) {
            alert(msg.d);
        }
    });

    return false; // THIS IS VERY IMPORTANT
});

Также очистите вызов AJAX для правильного кодирования параметров, например:

jQuery("#myContent_submit_image").click(function () {
    jQuery('#login_form_spinner').show();
    jQuery.ajax({
        type: "POST",
        url: "Logon.aspx/LoginService",
        data: JSON.stringify({
            username: jQuery("#myContent_login").val(), 
            password: jQuery("#myContent_password").val(),
            isRemember: jQuery("#myContent_remember_me").is(':checked')
        }),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            if (msg.d != 0) {
                window.location.replace(msg.d);
            }
        },
        error: function (msg) {
            alert(msg.d);
        }
    });

    return false; // THIS IS VERY IMPORTANT
});
0 голосов
/ 30 марта 2011

В этой строке

jQuery('login_form_spinner').show();

Это опечатка в посте или в вашем исходном коде?Я предполагаю, что вам не хватает "#" для вашего селектора.Так как IE обрабатывает такого рода ошибки иначе, чем FF и Chrome.Вы получаете различное поведение в разных браузерах.

0 голосов
/ 30 марта 2011

Внимательно проверьте документацию для jQuery. ajax , и вы увидите, что success и error используют разные аргументы:

success(data, textStatus, jqXHR)
error(jqXHR, textStatus, errorThrown)

Итак, ваш обработчик ошибок должен выглядеть так:

error: function (jqXHR, status, error) {
    alert("have error: " + status);
}

Как только вы успешно получите сообщение об ошибке, вы можете выяснить, что является причиной ошибки.

0 голосов
/ 30 марта 2011

как сказал Джастин, вы пропускаете хас или ставите точки и безумные изменения в вашем объекте данных

<script type="text/javascript">
jQuery(document).ready(function ($) {
    $("#myContent_login").focus();
    $("#myContent_submit_image").click(function () {
        $('#login_form_spinner').show();
        $.ajax({
            type: "POST",
            url: "Logon.aspx/LoginService",
            data: {
                "username":$("#myContent_login").val(),
                "password":$("#myContent_password").val(),
                "isRemember":$("#myContent_remember_me").is(':checked')
            },
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                if (msg.d != 0) {
                alert("there isnt error: " + msg.d);
                }
            },
            error: function (msg) {
                alert("have error: " + msg.d);
            }
        });
    });
});
</script>

но я подозреваю, что вы не возвращаете заголовок json или что-то в этом роде

...