【发布时间】:2012-06-15 05:13:04
【问题描述】:
在混合 html/js ajax 响应中访问 javascript 代码时遇到问题。 jQuery ajax 文档状态:
如果指定了 html,则检索到的任何嵌入的 JavaScript data 在 HTML 作为字符串返回之前执行
我可以通过在 html 回复中添加一个简单的 sn-p 来确认:
<script type="text/javascript"> alert($(this)); </script>
那么如何保留对 js 代码的访问权与一次性执行?尝试实现模式登录(以防止表单提交屏幕中会话超时时数据丢失)。当然,我需要能够访问 ajax 的 js 代码,然后验证电子邮件/密码字段和 ajax 验证远程服务器上的用户凭据。
这是模态登录coffeescript sn-p:
# 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 执行。
无论如何,想法赞赏!客户端既非常简单又……非常复杂;-)
【问题讨论】:
标签: javascript jquery ajax modal-dialog