2011-09-12 42 views
0

我目前正在编写一个程序,它使用AJAX加载表单来编辑网站上的对象。我在Loading script tags via AJAX上发现了类似的问题,但它并不能真正满足程序的需求。AJAX脚本加载

返回的ajax是一个预先构建的一组表单元素,当调用某个区域时,比如TinyMCE textarea(它就是这样)时,它会返回一组内置到文本中的脚本标记。

所以我的问题是,是否有可能运行已放在div中的脚本标记并运行它们?

另外,我想避免使用jQuery,因为它可以在任何数量的平台上运行。

+0

“另外,我想避免使用jQuery,因为它可以在任何数量的平台上运行。”这些平台可以是哪些平台? jQuery是用JavaScript编写的。 –

+0

好吧,我的意思是没有jQuery – topherg

回答

1

是的,您可以将传入的html和脚本添加到dom中,然后在dom中搜索任何脚本标记。然后你会评估脚本,如果你愿意,可以忽略任何jQuery脚本标签。

但是:

这种解决方案往往是相当脆弱的。

将Ajax有效载荷修改为单独的html和javascript脚本会更好,更稳定。这样,您的Ajax处理程序就可以直接处理它们而不会尝试将它们分开。

新增

Re:怎么发回的HTML和JavaScript部分:你可以做独立的Ajax调用,或返回一个JSON对象,其中包括两个部分。例如:

{"js": "<the js part of the response>", 
"html": "<the html part of the respons>"} 

使用您的主机系统上的json库采取逃避任何报价或其他JSON特殊字符,无论是在JS或HTML值问题的关心。

同时返回html和js会保存一个Ajax调用(这可能很重要),并且通常会相对于两个调用简化您的代码。

我在生产中使用这种技术,效果很好。

+0

我正在考虑这样做,并在单独的ajax查询中创建它 – topherg

+0

@Chris,感谢您的支持。另外,请参阅上面的答案。 –

1

你的意思是你从ajax中返回一个js脚本并想运行它?如果是这样,你可以使用eval函数。

+1

好吧,它有一个表单元素的列表作为一个字符串,其中的一部分是一个脚本。到目前为止,我已经完成了它,它扫描脚本元素的文本,并在头部区域创建它们。到目前为止,它开始工作。我用http://unixpapa.com/js/dyna.html寻求帮助 – topherg