jQuery.load () загружает страницу, но javascript для встраивания внутри загруженной страницы предоставляет метод Not Allowed - PullRequest
0 голосов
/ 09 ноября 2010

Итак, вот сценарий:

Я работаю с ASP.NET MVC 2 в рамках 4.0 и у меня есть страница, которая вызывает $ .load для ссылки Action.Это все нормально, все работает как положено.Страница, которая загружается, имеет вызов файла javascript:

<script type="text/javascript" src="somejs.js"/>

Это сбой и говорит, что «Метод не разрешен», так как он пытается POST этот вызов вместо GET.Я могу видеть, что это происходит с firebug.

У меня есть другой файл js в проекте, который включен на все страницы с вызовом:

$.ajaxSetup({
    type: "POST",
    cache: false,
    timeout: 60 * 1000
});

это так, чтобы я неЯ должен сделать все мои вызовы $ .ajax явно POST.Если я изменю это на GET, вызов $ .load прекрасно работает.Тем не менее, большая часть остальной части сайта не работает, так как Microsoft удалила метод GET из MCV 2 или платформы 4.0 (я не помню, какой именно).

Я бы не стал менять все $ .ajaxявно вызывает POST, но я не уверен, что еще нужно сделать на этом этапе, поэтому я надеялся найти ответ здесь.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Загружаемая страница содержит вызов файла JavaScript:

Не вставляйте HTML с тегами <script> в документ, используя load() или html().Это очень ненадежный кросс-браузер (и в jQuery, который может полностью удалить теги скрипта в зависимости от ситуации), и даже когда он работает, он может вызвать путаницу, загружая один и тот же скрипт дважды, потенциально давая вам дублирующиеся определения и обработчики.(И, конечно, любой сценарий, основанный на выполнении во время загрузки страницы, обречен.)

Если какой-либо сценарий необходимо выполнить после загрузки страницы, либо оставьте этот код в статическом сценарии и выполните его вajax / load функция обратного вызова или сервер должен вернуть объект JSON, содержащий код в строке отдельно от HTML.

Я бы не стал менять все вызовы $ .ajax наPOST явно

Если вам действительно нужно попытаться динамически загрузить теги <script>, вам придется ... либо сделать это, либо изменить вызов на ajax() в строке jQuery-1.4.3.js 4978включить явную настройку type: 'GET'.Возможно, это ошибка jQuery, которая не включена.Но с другой стороны, вся посылка AJAX-загрузки <script> ошибочна.

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

Пара мыслей. Согласно документации для .load () :

Метод POST используется, если данные предоставляются в виде объекта; в противном случае предполагается GET.

Как вы звоните .load ()? Если вы используете объект в качестве второго параметра, он будет использовать POST.

Если вы используете .load правильно, и проблема возникает из-за ajaxSetup, возможно, вы можете временно изменить тип ajaxSetup на GET, пока идет загрузка, а затем установить его обратно в POST. Просто идея.

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