[我试图构建一个基于Web的代码编辑器,并将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语法糖,因此我正在使用$ .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"});
我仍然不明白为什么执行了被调用文件中的代码,我没有在脚本标签或任何内容中附加到主体。
jQuery.ajax
接受dataType
参数。显式设置它将:
Accept
标题Content-Type
并将数据解析为您说的格式。如果未设置,则jQuery将根据响应的Content-Type
推断数据类型。这是通常好事!
在这种情况下,您正在请求JavaScript(它将附带Content-Type: text/javascript
响应标头),但不希望将其视为JavaScript。 jQuery确实支持"script"
作为数据类型!
设置dataType
(至"text"
)以覆盖默认处理。
((通过@ freedomn-m来发现问题)