我有一个关于 AJAX 的一般性问题。可以在 AJAX 响应中发送 JavaScript 并执行它吗?或者是使用 JSON 或纯 HTML 响应的唯一优雅方式?我的问题是我正在寻找处理 AJAX 请求的最佳方法,这些请求会导致插入 HTML 或执行 JavaScript,具体取决于用户数据。
非常感谢。
我有一个关于 AJAX 的一般性问题。可以在 AJAX 响应中发送 JavaScript 并执行它吗?或者是使用 JSON 或纯 HTML 响应的唯一优雅方式?我的问题是我正在寻找处理 AJAX 请求的最佳方法,这些请求会导致插入 HTML 或执行 JavaScript,具体取决于用户数据。
非常感谢。
不,可以这样做,在 jQuery $.getScript 中这样做,它通过 ajax 获取文件,然后对其进行评估。这就是为什么在使用 getScript 时没有添加任何脚本标签的原因
执行 ajax 调用接收到的 javascript 是一个坏主意,因为这可能导致 XSS 风格的攻击(eval 是邪恶的,所有的爵士乐)。
AJAX 响应最好以 JSON 格式提供,然后客户端脚本可以根据接收到的 JSON 执行操作。
我认为除了一些变量之外,在 AJAX 响应之后执行的 JavaScript 函数对于每个人来说都是标准的。如果是这种情况,您应该在脚本文件中包含 JavaScript 函数,该函数会在 . 然后让 AJAX 响应返回您需要的变量,例如用户 ID。然后使用该变量正常调用 JavaScript 函数,而不是每次都注入一个新函数。
如果返回 HTML,您可以在成功的 AJAX 请求时将其直接插入 DOM。
我认为要走的路是始终返回 JSON,即使它是 HTML 响应。JSON 响应可能类似于:
{"responseType":"HTML", "varID":null, "payload":"<div>some html</div>"}
如果响应是 JS 类型,那么 varID 可以具有该变量并且有效负载可以为空。这只是一个示例,但您可以执行类似的操作来标准化响应,但同时处理这两种情况。