2

我有一个关于 AJAX 的一般性问题。可以在 AJAX 响应中发送 JavaScript 并执行它吗?或者是使用 JSON 或纯 HTML 响应的唯一优雅方式?我的问题是我正在寻找处理 AJAX 请求的最佳方法,这些请求会导致插入 HTML 或执行 JavaScript,具体取决于用户数据。

非常感谢。

4

3 回答 3

0

不,可以这样做,在 jQuery $.getScript 中这样做,它通过 ajax 获取文件,然后对其进行评估。这就是为什么在使用 getScript 时没有添加任何脚本标签的原因

于 2012-04-13T14:00:35.323 回答
0

执行 ajax 调用接收到的 javascript 是一个坏主意,因为这可能导致 XSS 风格的攻击(eval 是邪恶的,所有的爵士乐)。

AJAX 响应最好以 JSON 格式提供,然后客户端脚本可以根据接收到的 JSON 执行操作。

于 2012-04-13T14:04:17.420 回答
0

我认为除了一些变量之外,在 AJAX 响应之后执行的 JavaScript 函数对于每个人来说都是标准的。如果是这种情况,您应该在脚本文件中包含 JavaScript 函数,该函数会在 . 然后让 AJAX 响应返回您需要的变量,例如用户 ID。然后使用该变量正常调用 JavaScript 函数,而不是每次都注入一个新函数。

如果返回 HTML,您可以在成功的 AJAX 请求时将其直接插入 DOM。

我认为要走的路是始终返回 JSON,即使它是 HTML 响应。JSON 响应可能类似于:

{"responseType":"HTML", "varID":null, "payload":"<div>some html</div>"}

如果响应是 JS 类型,那么 varID 可以具有该变量并且有效负载可以为空。这只是一个示例,但您可以执行类似的操作来标准化响应,但同时处理这两种情况。

于 2012-04-13T14:04:57.470 回答