Недопустимая операция с объектом-прототипом WrappedNative - PullRequest
8 голосов
/ 28 февраля 2011

Извините, если этот ответ похож на другие вопросы на этом сайте, но я не смог найти то, что мне нужно.

У меня есть этот код:

    $.ajax({
            url: '../../cgi-bin/executeQuery',
            type: 'GET',
            data: ({siid:5185,of:"xmlWithColID"}),
            dataType: 'xml',
            success: function(xmlR){
                    try{
                            $.ajax({
                                    url: '../../cgi-bin/authList.py',
                                    type: 'GET',
                                    data: ({xmlToFormat:xmlR,service:"paperList"}),
                                    dataType: 'xml',
                                    success: function(data){
                                            try{
                                                    displayResult(data,loadXMLDoc("js/authList/paperTableStyle.xsl"),"divPaperTable");
                                            }catch(e){
                                                    console.log(e.message);
                                            }
                                    },
                                    complete: function(XMLHttpRequest, textStatus){
                                            $('#divMakingAuthorList').addClass('secondary');
                                            $('#divMakingAuthorList').hide();
                                    }
                            });
                    }catch(e){
                            console.log(e.message);
                    }
            }
    });

Товыдает мне следующую ошибку в FF: «Недопустимая операция над объектом-прототипом WrappedNative».

Когда я удалил часть кода «success», сообщение об ошибке все еще было там.После этого я удалил "complete" parte и там тоже появилось сообщение об ошибке.Но потом, когда я удалил следующую строку моего кода: data: ({xmlToFormat: xmlR, service: "paperList"}), сообщение пропало.

Но я не понимаю причину.Можно ли отправить «xml» в мой CGI как данные в событии ajax?

Спасибо

1 Ответ

8 голосов
/ 18 апреля 2011

Это сообщение об ошибке обычно относится к тому, когда вы пытаетесь обернуть нативную функцию, например, "eval"

Если вы делаете что-то подобное -



(function() {

   var t = eval;

   eval = function() {
      t.apply(window, arguments);
   }

}();

Firefox больше не позволит вам использовать eval, поскольку сигнатура функции больше не соответствует внутренней контрольной точке, и она считает это коварной тактикой. Я думаю, что это совершенно глупо и нарушает саму предпосылку гибкости javascript, но это то, с чем нам теперь приходится иметь дело.

То же самое относится к чему-то вроде var x = document.createElement; вызов x ('div') заставит firefox скулить, как эмо-подросток.

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

Я бы проверил, что происходит в displayResult и loadXMLDoc - и я считаю, что недавно в FireFox были добавлены проверки безопасности недопустимых операций, поэтому, если вы можете попробовать более старую версию, например 3.0, вы можете подтвердить это различие.

В противном случае я не вижу, чтобы что-то вспыхивало с предоставленным вами кодом, и отправка XML-данных полностью допустима при использовании ajax.

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