gpt4 book ai didi

jquery - 重定向导致 HTTP 错误 414 - 请求 URL 太长

转载 作者:行者123 更新时间:2023-12-01 04:46:41 24 4
gpt4 key购买 nike

我正在使用 JQuery Ajax 将表单发布到 cfc。

当发生错误时,例如发出重复的帖子,cfc 会检查这一点并执行简单的重定向。它是这样的:

<cfif rsDuplicate.RecordCount GT 0>
<cflocation url="/items/new" addtoken="no">
</cfif>

当发生此错误时,重定向会变得疯狂,并且似乎会向我的浏览器发送一个 URL,其中包含整个网页的 HTML,即像这样 http://mysite/items/<!doctype html><html lang="en"><meta charset="utf-8">...

我不明白为什么要这么做。我很确定这与我通过 Ajax 对 CFC 进行原始调用有关,但如果我要求服务器将我重定向到新页面,那么它肯定根本不涉及客户端吗?

我还包括了data-ajax="false"在我的表单标签中,因为我在某处读到这可能有帮助,但事实并非如此。有什么想法吗?

最佳答案

AJAX 的 CFC(以及任何语言的服务器端对象)的处理方式非常类似于标准浏览器请求。仅仅因为您没有直接看到输出,并不会改变浏览器发送正常请求并取回数据的情况。

例如,您可能知道,您的 cfc 遵守 application.cfc 的规则,并将像普通浏览器页面请求一样包含页眉和页脚。

当您的重复检查触发并评估为 true 时,cfc 将被cflocation编辑到新的 url,该 cflocation 不会传递回 ajax 调用以从那里触发它。冷聚变无法帮助您做到这一点。

我在一些应用程序中做了类似的事情,我所做的是返回一个包含顶层状态变量的结构。它可能看起来像

<cfreturn {STATUS = 2, KEYCODE = "Duplicate entries found", DESTURL = "/err_dupes.cfm"}>

现在,在 jquery ajax 处理程序中,在成功部分(因为调用仍然成功),您可以执行类似的操作..

....
if (ajaxObj.STATUS == 2) {
alert(ajaxObj.keycode); // If you want to notify the user.
window.location.replace(ajaxObj.DESTURL);
}

关于jquery - <cflocation> 重定向导致 HTTP 错误 414 - 请求 URL 太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28388425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com