gpt4 book ai didi

asp-classic - 在服务器端 ASP JScript 中使用 mootools 时出现 Response.WriteBlock 错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:12 25 4
gpt4 key购买 nike

我今天一直在玩弄 Mootools 1.3 服务器端。它真的很不错,经过一些抨击才得到它经典的 ASP 友好但仍然充满善良 (tm)。

在向 friend 展示 Mootools 的功能时,我遇到了一个奇怪的 ASP 相关错误,这是我以前从未见过的。

Microsoft JScript runtime error '800a138f'

'Response.WriteBlock(...)' is null or not an object

导致它的代码是 Mootools 时髦的“forEach”助手之一:

[1,2,3].each( function( i ) {
Response.Write( "<b>" + i + "</b>, " );
});

它真的一点都不喜欢这段代码。我注释掉了 Response.Write 并有一个空 block ,它仍然抛出错误。很奇怪。我知道 ASP 做了一些优化魔术来将 html block 和 asp block 组合在一起(因此有 Reponse.WriteBlock 注释)但不确定为什么这适用于此。

但是这段代码会运行:

var fruits = [];
fruits.push( "apples" );
fruits.push( "oranges" );

fruits.each( function( fruit ) {
Response.Write( "<b>" + fruit + "</b>, " );
});

// As will this
var nums = [ 1,2,3,4,5 ];
nums.each( function(i) {
Response.Write( "<b>" + i + "</b>" );
});

有没有人知道是什么导致了这个错误?我会继续挖掘,但想知道是否有任何 JScript 伙伴可以阐明一些问题。可能只是 ASP 的怪癖?

[更新]

Wierdness 继续,设法让它工作,但它似乎取决于 each 循环之前发生的事情。所以回顾一下这是行不通的:

<%

[ 1,2,3,4,5 ].each( function(i) {
Response.Write( "<b>" + i + "</b>" );
});

%>

但是这样做(注意只是在它上面添加了 var 行):

<%

var something = 1;

[ 1,2,3,4,5 ].each( function(i) {
Response.Write( "<b>" + i + "</b>" );
});

%>

确实很奇怪。一定是与 ASP 处理 block 的方式有关,也许在解析器中有一条关于 block 以(它会认为是相当随机的)数组语句开头的规则,或者至少它没有被编程为期望我这样做那(我不认为他们想象服务器端 mootools 的方式回到什么时候)!尽管如此,我仍然想要一个深入的解释,这样我就可以更好地避免它。

最佳答案

尝试将您的代码更改为...

<%

;[ 1,2,3,4,5 ].each( function(i) {
Response.Write( "<b>" + i + "</b>" );
});

%>

这只是一种预感。


通常,以 ([ 开始一行,尤其是一个文件,而没有自己的分号被认为是不好的做法。主要原因与连接有关。 ..

例如

//foo.js
1 + 1 == 2

//bar.js
("lol, string")

//foo.js + bar.js
1 + 1 == 2("lol, string") // TypeError: number is not a function

因为 bar.js 没有办法知道最终会在它之前包含什么,它应该总是在 (

//bar.js
;("lol, string")

//foo.js + bar.js
1 + 1 == 2;("lol, string") // SUCCESS!!1!

我的预感是 ASP 领域正在发生类似的奇怪事情。
由于我们无法访问 JScript 的源代码或 ASP 框架本身,因此无法确定发生了什么。

关于asp-classic - 在服务器端 ASP JScript 中使用 mootools 时出现 Response.WriteBlock 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4096436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com