【发布时间】:2011-05-23 16:44:48
【问题描述】:
早上。我有一个在 jquery 对话框(灯箱)内呈现的表单,目前正在尝试将 recaptcha 实现为表单的一部分。因为我使用的是 symfony 框架,所以我可以使用 sfFormExtraPlugin,它包含一个 recaptcha 小部件。如果我作为原始页面的一部分进行回显,则此小部件呈现良好,但在 jquery 对话框内时不会呈现。
经过一番调查,我发现 recaptcha 创建的脚本类似于以下内容:
var RecaptchaState = {
site : '6Let7r0SAAAAAJFp77tW4gRze7r5y89Cql_msPcm',
challenge : '03AHJ_VusnO7jeI3VF-cHgOIv9RY9RIpYl2QWea_LULIdL8xrM9PZdcZZ7I9gFf4gSbr1fxGCSQjQZPJQ1sa6p1oEI9U_nkU8f2SjczxjH6nzmy43Q-m_8rnxWhhRUIDa7iTPEwo4-dwi-FipyMHsSAz-nE5yfFQfZog',
is_incorrect : false,
programming_error : '',
error_message : '',
server : 'http://www.google.com/recaptcha/api/',
timeout : 18000
};
document.write('<scr'+'ipt type="text/javascript" s'+'rc="' + RecaptchaState.server + 'js/recaptcha.js"></scr'+'ipt>');
我认为问题在于 document.write,b/c 在 jquery 对话框中调用 javascript 与实际文档相比,因此 document.write 无法按预期工作。
想法?
-- 编辑--
在我的blog 上发布了最终解决方案,我会在这里发布,但它相当复杂。
【问题讨论】:
-
如果您的灯箱中充满了 AJAX 请求的响应,则响应中的 javascript 可能不会被执行...您能告诉我们您的灯箱是如何工作的吗?另外,您能否向我们展示您在使用 Firebug 检查小部件时可以看到的 html?
-
@greg0ire:你是对的。它是 b/c document.write js 没有被执行。完成后我会发布我的结果。我得到了灯箱来呈现 recaptcha 小部件,现在只是在进行验证。
-
通过编辑发布了最终解决方案的链接。感谢您的回复。
标签: jquery symfony1 dialog recaptcha