Как я могу предотвратить оценку javascript? - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь создать веб-редактор кода и загрузить javascript в значение textarea, и совершенно случайно обнаружил, что страница оценивает код.

var url = 'local.js';
var timestamp = new Date().getUTCMilliseconds();
$.get(url, {r:timestamp}, function(data) {
    $("#scriptview").val(data);
    $("#editor").slideDown();
}); 

Как предотвратить GET-запрос от оценки кода? Я получаю исходный код непосредственно из локального файла.

ОБНОВЛЕНИЕ: изменение кода для добавления dataType решило эту проблему. Я не смог получить $ .get syntacti c sugar просто так, поэтому я использую $. ajax

var url = 'local.js';
var timestamp = new Date().getUTCMilliseconds();
$.ajax({url:url, data: {r:timestamp}, success: function(data) {
       $("#scriptview").val(data);
       $("#editor").slideDown();
       return false;
}, dataType: "text"});

Я до сих пор не понимаю, почему код внутри вызываемого файла был выполнено, я не добавляю текст в тег скрипта или что-либо еще.

1 Ответ

1 голос
/ 06 апреля 2020

jQuery.ajax принимает параметр dataType. Если установить его явно, будет:

  • Установить заголовок Accept
  • Игнорировать Content-Type ответа и проанализировать данные в формате, который вы говорите.

Если вы не установите его, то jQuery выведет тип данных из Content-Type ответа. Это обычно хорошая вещь!

В этом случае вы запрашиваете JavaScript (который будет иметь заголовок ответа Content-Type: text/javascript), но не хотите, чтобы его обрабатывали как JavaScript. jQuery поддерживает "script" в качестве типа данных!

Установите dataType"text"), чтобы переопределить обработку по умолчанию.

(Кредит для @ freedomn-m для обнаружение проблемы)

...