在混合的 html/js ajax 响应中访问 javascript 代码时遇到问题。jQuery ajax 文档状态:
如果指定了 html,则检索数据中的任何嵌入 JavaScript 都会在 HTML 作为字符串返回之前执行
我可以通过在 html 回复中添加一个简单的片段来确认:
<script type="text/javascript"> alert($(this)); </script>
那么如何保留对 js 代码的访问权与一次性执行?尝试实现模式登录(以防止表单提交屏幕中会话超时时数据丢失)。当然,我需要能够访问 ajax 的 js 代码,然后验证电子邮件/密码字段并 ajax 验证远程服务器上的用户凭据。
这是模态登录咖啡脚本片段:
# submit form
$.ajax
success: (data) -> ...
error: (data) ->
popAuth(data.responseText) if(data.status == 401)
popAuth = (title) ->
$.fancybox({
href: "/login"
ajax: { type: "GET" }
title: title
})
也许我可以向 popAuth() ajax 选项添加一个成功回调来存储返回的 js 代码?jQuery“实时”处理程序怎么样?不幸的是,这种情况并不像人们希望的那样直截了当;-) 我认为$.getScript
这是一种选择,但不希望将 html 与 js 分开,因为服务器端已经组装了 html + js 并且原始的 ajax 调用将其全部拉下来一气呵成。(即避免创建专用的服务器端控制器来发送回 js 文件内容包)
我当然愿意接受替代解决方案来解决这个问题。例如,我可以在隐藏的 div 中存储每个屏幕上的登录字段和 js 登录验证代码(JVM CRUD 应用程序位于 WordPress 前端,因此基本上每个屏幕都需要身份验证),然后“本地”弹出模式登录窗口,其中我假设会绕过远程 ajax 内容的烦人的一次性 js 执行。
无论如何,想法赞赏!客户端既非常简单又......非常复杂;-)