Почему этот Jquery Ajax не работает в Opera и Safari? - PullRequest
1 голос
/ 25 ноября 2010

Этот код работает в FF, Chrome, IE6 / 8, но не в Safari и Opera. Есть идеи почему?

Вот код:

var name = $('#esm').val();
        var email = $('#nam').val();
        var message = $('#med').val();
        var ad_id = $('#i_d').val();

    var data_string = 'esm='+ name + '&nam=' + email + '&med=' + message + '&i_d=' + ad_id;

            $.ajax({
                type:       "POST",
                url:        "/my_php_file.php",
                data:       data_string,
                success:    function(data) {
                    $('#tip_loader').hide();
               if(data==1){alert('success'); }
               else {alert('error'); }
                       }//end success function
        }) //end ajax call

Я обнаружил ошибку именно в вызове "Ajax", потому что, когда я ставлю окно оповещения непосредственно перед $.ajax, предупреждение отображается правильно. Однако, если я добавлю окно оповещения в функцию успеха, ничего не отобразится, оповещения не будет.

Это происходит только в Opera и Safari ...

EDIT:

К вашему сведению: я включаю этот файл javascript в файл php, а также включаю файл jquery.js в файл php. Так что это все во внешнем файле.

EDIT:

/ main.php /bin/jquery.js /bin/tip.js /bin/tip.php

Я включаю вышеупомянутые js-файлы в main.php, и действие формы в main.php установлено в /bin/tip.php

.

И путь к URL-адресу ajax - /bin/tip.php вместо my_php_file.php

Ответы [ 3 ]

1 голос
/ 24 июня 2013

В Opera по умолчанию Allow File XMLHttpRequest имеет значение false.Так что вам нужно изменить настройки.Откройте браузер Opera, введите about: config.Вы попадете на экран настроек.Зайдите в папку User Prefs, вы увидите настройки Allow File XMLHttpRequestПроверьте это и затем сохраните.Это должно работать.

0 голосов
/ 25 ноября 2010

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

Другие советы: # 1 вы не используете encodeURIComponent ни для одного из передаваемых им значений. Гораздо проще заставить jQuery сделать это за вас,

вместо данных: data_string, вы должны иметь

данные: {esm: имя, имя: электронная почта, med: сообщение, "i_d": ad_id}

jQuery создаст строку запроса для вас и правильно.

0 голосов
/ 25 ноября 2010

В Opera есть встроенный инструмент отладки, который называется Dragonfly. Зайдите в меню Сервис -> Дополнительно -> Opera Dragonfly
Если у вас нет строки меню Файл, выберите Меню -> Страница -> Инструменты разработчика -> Открыть Opera Dragonfly

Как только он откроется (откройте его на странице, над которой вы работаете), перейдите на вкладку Сценарии (она, вероятно, попросит вас обновить страницу, сделайте это) и перейдите к внешнему файлу js. Как только вы нашли свой код, вы можете установить точку останова в строке $.ajax(), щелкнув номер строки слева. Теперь запустите ваш код, и вы увидите, что он сломается в этой строке JavaScript. Затем вы можете использовать вкладку проверки (внизу, в середине), чтобы убедиться, что все ваши переменные установлены правильно. Вы также можете пройти и отладить JavaScript.

Другая вещь, которую вы захотите сделать, это добавить функцию ошибки, например:

$.ajax({
    type: "POST",
    url: "/my_php_file.php",
    data: data_string,
    success: function(data) {
        $('#tip_loader').hide();
        if (data == 1) { alert('success'); }
        else { alert('error'); }
    }, //end success function
    error: function(xhr, textStatus, errorThrown) {
        alert(errorThrown);
    }
});  //end ajax call

Посмотрите, даст ли это вам больше информации.

Кроме того, проверьте консоль ошибок, как предложено @Mufasa. Его можно найти на вкладке «Консоль ошибок» в Dragonfly.

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