Ajax.Request явно не оценивает код JS - PullRequest
0 голосов
/ 07 августа 2010

Я создаю отчет, и интерфейс для параметров отчета, и сам отчет создаются точно таким же файлом php.

Это первые строки части файла, вызываемой при создании отчета.создается:

<script type="text/javascript">alert("bla");</script>

Всякий раз, когда я использую этот код для получения отчета

new Ajax.Updater('reportarea','reportengines/<?=$configdata['filename']?>',
                    {
                         method: 'post',
                         parameters: {
                             action: 'executereport',
                             rep_projects: $('rep_projects').value,
                             rep_daterange: $('rep_daterange').value,
                             rep_daterangefws: $('rep_daterangefws').value,
                             rep_daterangemos: $('rep_daterangemos').value,
                             start_date: startdate,
                             end_date: enddate
                        }
                    }
                )

все работает отлично, и весь мой код JS оценивается так, как только страница открывается,предупреждение звучит как «бла», но, если я использую это:

    new Ajax.Request( 'reportengines/<?=$configdata['filename']?>',
                    {
                         method: 'post',
                         parameters: {
                             action: 'executereport',
                             rep_projects: $('rep_projects').value,
                             rep_daterange: $('rep_daterange').value,
                             rep_daterangefws: $('rep_daterangefws').value,
                             rep_daterangemos: $('rep_daterangemos').value,
                             start_date: startdate,
                             end_date: enddate
                        },
                        onSuccess: function(transport ) {
                            $('reportarea').innerHTML = transport.responseText;
                            Effect.BlindUp('reportoptions', { duration: 1.0 });
                            Effect.BlindDown('reportarea', { duration: 1.0 });
                        }
                    }
                )

, не отображается даже малейшее количество активности JS.Возможно, я неправильно использую Ajax.Request, но не могу понять, какой из них ...

Кто-нибудь знаком с этим?

1 Ответ

0 голосов
/ 08 августа 2010

Согласно документации прототипа

"Если ajax-запрос следует той же политике происхождения и его ответ имеет тип содержимого, связанный с JavaScript, содержимое свойства responseText будет автоматически передано в eval"

В этом случае у вас есть два варианта.

Установите Content-Type с другой стороны на одно из следующих значений:

  • применение / ECMAScript
  • Приложение / JavaScript
  • применение / х-ECMAScript
  • применение / х-Javascript
  • текст / ECMAScript
  • текст / JavaScript
  • текст / х-ECMAScript
  • текст / х-Javascript

или оценка Force JS:

    new Ajax.Request( 'reportengines/<?=$configdata['filename']?>', {
        method: 'post',
        evalJS: 'force',
        parameters: {
            action: 'executereport',
            rep_projects: $('rep_projects').value,
            rep_daterange: $('rep_daterange').value,
            rep_daterangefws: $('rep_daterangefws').value,
            rep_daterangemos: $('rep_daterangemos').value,
            start_date: startdate,
            end_date: enddate
        },
        onSuccess: function(transport ) {
            $('reportarea').innerHTML = transport.responseText;
            Effect.BlindUp('reportoptions', { duration: 1.0 });
        }
    });

Примечание : добавлена ​​дополнительная опция evalJS: 'force'

...