gpt4 book ai didi

javascript - 验证 JQuery 中是否存在 URL

转载 作者:行者123 更新时间:2023-12-03 11:12:49 26 4
gpt4 key购买 nike

我必须在 JQuery 代码的新选项卡中打开 URL。我正在使用下面的代码来做到这一点。

window.open(result + PATHtoCALL);

它工作正常,但在某些情况下,报告在 URL 中不可用,我在新的浏览器选项卡中得到以下输出

{"success":false,"timestamp":1408690695881,"error":{"code":"0"}}.

所以我认为首先验证报告是否准备就绪可能是个好主意。如果我成功了,那么我将调用 window.open(result + PATHtoCALL);

所以我在 Ajax 中编写了以下代码来验证它。但是它总是出现在错误代码中。

$.ajax({
url: result + PATHtoCALL,
type: 'POST',
dataType: 'json',
success: (function(resp, statusText, xhr) {
if (resp.success)
{
console.log('.............Passed');
}
else
{
console.log('.........Failed');
}
}).bind(this),
error: (function(xhr, statusText, error) {
console.log('11111111111111111111111111111111',error);
}).bind(this)
});

但是上面的 Ajax 代码总是失败,错误是“SyntaxError: Unexpected token <”

如果我运行 window.open(result + PATHtoCALL); 它工作正常。

Ajax 代码中存在什么错误?

还有比这种方法更好的替代方法吗?

如果这真的很微不足道,我很抱歉。我对 Javascript 很陌生。

最佳答案

如果您尝试在新窗口中打开 URL,那么它(大概)是一个 HTML 文档(或其他设计为人类可读的文档)。

这个:

{"success":false,"timestamp":1408690695881,"error":{"code":"0"}}.

是 JSON。

这个:

dataType: 'json',

告诉 jQuery 将响应作为 JSON 进行处理,无论服务器说什么。

所以:

如果收到错误消息,那么这将是一个成功的 HTTP 请求(因为错误是在数据级别而不是 HTTP 级别表达的),因此 Ajax 请求将会成功。

如果您没有收到错误消息,这也将是一个成功的 HTTP 请求,但响应将是 HTML。 jQuery 将尝试将 HTML 解析为 JSON 并失败。然后它将抛出运行错误处理程序。

<小时/>

解决此问题可以采取的方法包括:

  • 停止强制 jQuery 将响应解析为 JSON。然后检查 jqXHR 对象中的内容类型 header ,以确定您是否返回了文档或 JSON。
  • 更改服务器,以便在文档未准备好时返回 404 错误,然后对其发出 HEAD 请求并测试状态代码(请注意,404 将触发错误状态,因此您可以使用 success/错误处理程序来决定下一步做什么)
  • 创建一个 JSON 端点,告诉您(始终以 JSON 格式)文档是否已准备好,然后 window.open不同 URL 来实际获取文档。

关于javascript - 验证 JQuery 中是否存在 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27488141/

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