Javascript с Ajax отказывается работать под Firefox и IE9, но хорошо работает с Chrome - PullRequest
0 голосов
/ 01 марта 2012

Я пытаюсь выяснить после решения довольно многих проблем css, почему javascript не отвечает под IE9 и Firefox. Сценарий довольно упрощенный до сих пор .. не повезло! Это простая проверка электронной почты, которая использует rsv.js Бенджамина Кина и ajax для передачи данных в функцию php «зарегистрироваться» в другом файле. Chrome делает это великолепно .. IE независимо от версии и Firefox, НЕ.
Любые идеи, пожалуйста, PLS ??

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

        function sign_up(email) 
        {
        var rules = [];
        rules.push('required,NewsletterEmail,Your Email is necessary for the newsletter!');
        rules.push('valid_email,NewsletterEmail,The Email is Invalid');
        if (rsv.validate(document.getElementById('newsletter'), rules)) {
            $.ajax({
                type: 'POST',
                url: 'scripts/sign-up.php',
                data: 'email='+document.getElementById('NewsletterEmail').value,
                success: function(data){ $('#result').html(data); }
            });
        }
    }

Подтвержденная форма

<form id="newsletter" name="newsletter">
<input class="email" id="NewsletterEmail" name="NewsletterEmail" value="Email" 
type="text" /><a class="btn" onclick="sign_up(NewsletterEmail.value);">SubmitNow</a>
</form>

Ответы [ 3 ]

1 голос
/ 01 марта 2012

Ничего себе, проблема в том, что вы полагаетесь на особенно странную, imho, особенность Chrome.Chrome берет все элементы DOM с идентификаторами и сохраняет ссылку на них в глобальной области видимости, доступной по имени.

Поэтому, когда вы пишете NewsletterEmail.value, Chrome отправляет и получает значение элемента с идентификатором * 1004.*.Если вы хотите, чтобы он работал в других браузерах, измените его на стандартный:

document.getElementById('NewsletterEmail').value
1 голос
/ 01 марта 2012

Я не думаю, что полагаться на onclick - это хорошая идея, если у вас есть jQuery.Попробуйте это!

$("#newsletter").live("submit", function() {
    var rules = [];
    rules.push('required,NewsletterEmail,Your Email is necessary for the newsletter!');
    rules.push('valid_email,NewsletterEmail,The Email is Invalid');
    if (rsv.validate(document.getElementById('newsletter'), rules)) {
        $.ajax({
            type: 'POST',
            url: 'scripts/sign-up.php',
            data: 'email='+document.getElementById('NewsletterEmail').value,
            success: function(data){ $('#result').html(data); }
        });
    }
  return false;
 });

Или, может быть,

$(".btn").live("click", function() {
alert("dalsjdsa");
var rules = [];
rules.push('required,NewsletterEmail,Your Email is necessary for the newsletter!');
rules.push('valid_email,NewsletterEmail,The Email is Invalid');
if (rsv.validate(document.getElementById('newsletter'), rules)) {
    alert("hemesh");
    $.ajax({
        type: 'POST',
        url: 'scripts/sign-up.php',
        data: 'email='+document.getElementById('NewsletterEmail').value,
        success: function(data){ $('#result').html(data); }
    });
}
 return false;
});

Надеюсь, это поможет вам.Я предполагаю, что вы используете jQuery.

0 голосов
/ 01 марта 2012

Попробуйте добавить

href="javascript.void(0)"

к тегу

<a>

...