我目前的任务是为特定的DOM生成并提供集中模板 - 对于这个例子,我们只是说它是一个表单.
基本上我想采用每个表单元素(从标签,输入到div包装器)并将它们保存为单独的模板.
从那里我们将有一个UI,我们的制作人可以将这些表格拼凑在一起.一旦他们决定他们希望如何布置他们的表单(DOM顺序和结构对于这个项目实际上是关键的.它不能只是一个CSS解决方案),我们平台上的脚本将保存一个JSON对象,这将确定基于模板名称的DOM结构,我稍后可以在页面加载时引用它.
我认为这里的理想解决方案是将JSON对象发送到节点服务器或使用envjs以某种方式"构建"此dom,然后将其分配给PHP变量以包含在CodeIgniter视图中,以便可以将其编入索引由谷歌.
我知道JQuery本身与envjs一起工作,我知道有一个节点的JQuery插件,但是,这是我的第一个服务器端JS项目,它恰好是非常重要的.我能够通过命令行让envjs在我的本地机器上工作,但是完成一个简单的任务需要10-30秒.如果envjs是要走的路,我如何让它在后台运行并让脚本引用它?PHP卷曲到Tomcat上的envjs servlet可能吗?
一个警告是我的本地开发人员是WAMP(IT不会让我们拥有本地的unix机器),但我们的测试和生产环境都是LAMP.我有一个个人LAMP服务器我可以测试,如果这是绝对唯一的方式去这里,但在我的个人服务器上编码公司的东西可以让我有点热.
不幸的是,我没有时间研究所有的可能性,尝试/失败,就像我通常在我自己的时间使用新技术一样.想法,指导,代码示例 - 任何可以帮助我决定如何处理这个问题的内容都将非常感激.
我目前正在处理一段由其他人编写的代码.它用于httplib向服务器发出请求.它以正确的格式提供所有数据 - 例如消息正文,标题值等.
问题是,每次尝试发送POST请求时,数据都在那里 - 我可以在客户端看到它,但是没有任何东西到达服务器.我已经阅读了库规范,其用法似乎是正确的.
提取的库调用如下:
import httplib
conn = httplib.HTTPConnection('monkeylabs.pl', 80)
conn.connect()
request = conn.putrequest('POST', '/api/snippet/')
headers = {}
headers['Content-Type'] = 'application/json'
headers['User-Agent'] = 'Envjs/1.618 (SpyderMonkey; U; Linux x86_64 2.6.38-10-generic; pl_PL.utf8; rv:2.7.1) Resig/20070309 PilotFish/1.3.pre03'
headers['Accept'] = '*/*'
for k in headers:
conn.putheader(k, headers[k])
conn.endheaders()
conn.send('[{"id":"route"}]')
resp = conn.getresponse()
print resp.status
print resp.reason
print resp.read()
conn.close()
Run Code Online (Sandbox Code Playgroud)
这是一个已知问题,还是什么?我正在使用Python 2.7.不知道如何检查httplib的版本.
请不要建议将httplib替换为其他内容,除非它的内容非常相似(也许是httplib2).正如我所说的那样,代码不是我的代码,它的数量远远超过我刚刚发布的代码.重构它会导致一个重大问题.我对任何可靠的解决方法感兴趣.
编辑
调试输出:
send: 'POST /api/snippet/ HTTP/1.1\r\nHost: monkeylabs.pl\r\nAccept-Encoding: identity\r\nContent-Type: application/json\r\nAccept: */*\r\nUser-Agent: Envjs/1.618 (SpyderMonkey; U; Linux x86_64 2.6.38-10-generic; pl_PL.utf8; rv:2.7.1) …Run Code Online (Sandbox Code Playgroud) 我想使用文档(字符串形式)或URL加载DOM,然后对它执行javascript函数(包括jquery选择器).这将完全是服务器端,正在进行中,没有客户端/浏览器.
基本上我需要加载dom然后使用jquery选择器和text()&type val()函数从中提取字符串.我真的不需要操纵dom.
我看过.Net javascript引擎,如Jurassic和Jint,但都不支持加载DOM,因此不能做我需要的.
我愿意考虑非.Net解决方案(node.js,ruby等),如果它们存在,但我们更喜欢.Net.
编辑 下面是一个很好的答案,但目前我正在尝试不同的路线,我试图将envjs移植到侏罗纪.如果我可以开始工作,我认为它会做我想做的事,请继续关注....