如何发送带有额外元数据的html,以便JS (ajax)知道如何处理响应

how to send html with additional metadata so JS (ajax) knows what to do with response?

本文关键字:ajax 响应 处理 何处理 JS 以便 何发送 html 元数据      更新时间:2023-09-26

我只使用AJAX发出请求,我的大多数请求返回html,我加载到div#内容(不仅如此,但让我们说它是最常见的动作)。当我必须发送错误信息时,例如当用户会话过期时,就会出现问题-然后我必须"清除用户桌面"(替换整个body,而不仅仅是#content)。Ajax加载函数,不知道它会得到什么,所以服务器必须发送一些额外的信息,如何处理它的响应。

我想自定义标题,但想知道是否有一些其他的可能性或"最佳实践"这个问题。

你可以发送回的不仅仅是一个HTML片段放入#content,而是一个JavaScript片段来执行,或者是一个JSON文档,带一个键来描述如何解释它

有几种可能性:

  • 您可以使用<meta> html标签来描述问题

  • 你也可以简单地发送一个隐藏的<div><span>或任何东西并将其从AJAX接收端的结果中删除。

如果您正在加载可能附加元数据的内容,则可能希望发送回JSON。虽然它看起来很邋遢,但它工作得很好,并且更容易从中提取数据。

{"body": "<h1>I'm a title!</h1>", "errors": []}
{"body": "<h3>Session Expired</h3>", "errors": ["sessionExpired"]}

你可以将它与HTTP状态码结合起来,比如"422",它将启动错误回调,以进一步定制和专一化你的代码。

检查你是否有任何没有状态码的错误,你所要做的就是请求response.errors.length,看看它是否为,例如,0..在这种情况下,你知道没有错误。否则你会得到一系列已经发生的错误你可以循环它们来处理这些问题。要取出正文,只需执行$(response.body)—现在您就有了一个可以插入到任何地方的jquery化的html块。