是唯一的方法来给客户从服务器执行一些js代码的指令?

或换句话说: 如何发送一个客户端的消息从服务器执行一些页面上的JS代码?

这不是一个Ajax请求,它是一个普通的GET浏览器服务器请求。

比方说,我在我的应用程序的前端JavaScript文件中有这样的代码:

 if( condition_1 ) { FB.getLoginStatus(...) } else if( condition_2 ) { PayPal.getLoginStatus(...) } else { do smth else... } 

所以我想发送那些condition_1或者condition_2指令以及服务器的响应。 这不是Ajax请求。 这是从浏览器到服务器的简单的GET请求。

目前只有cookies出现在我的脑海里。

1)服务器从浏览器收到GET请求。

2)我读了cookies。 如果没有一定的cookie伴随着请求,我设置condition_1 ,否则我设置condition_2 cookie:

 if(req.cookies["foo"] == "foo") { res.cookies("foo", "condition_1") .status(200) .send() .end(); } else if(req.cookies["foo"] == "bar") { res.cookies("foo", "condition_2") .status(200) .send() .end(); } 

3)服务器发回一个200响应给客户端。

现在在浏览器中我检查这些cookie(为了简单起见,我做了document.cookie.foo ):

 if( document.cookie.foo == 'condition_1' ) { FB.getLoginStatus(...) } else if( document.cookie.foo == 'condition_2' ) { PayPal.getLoginStatus(...) } else { do smth else... } 

而我的问题是,cookies是这种情况下的唯一途径? 指示客户端代码执行某些条件

Cookies存储在浏览器中,并随每个请求一起发送回服务器。 它用于存储设置客户端,而不是从服务器发送信息。

如果您正在使用一些可以在响应中设置cookie的服务器端技术,那么为什么不使用它来发送要执行的脚本块呢?

你正在做的事情更复杂,他们需要:JavaScript提供eval

服务器可以简单地用一个expression式/语句回答一个string来在浏览器上下文中进行评估。 它不是在与Lisp相同的层次上开发的,但是即使在Javascript中,“数据”也可以直接“编码”(不需要像Java或C ++那样编写解释器来提高逻辑级别) 。