我必须在我的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的新手。
答案 0 :(得分:1)
如果您尝试在新窗口中打开URL,那么(可能)它是一个HTML文档(或其他设计为人类可读的内容)。
此:
{"success":false,"timestamp":1408690695881,"error":{"code":"0"}}.
是JSON。
此:
dataType: 'json',
告诉jQuery将响应作为JSON处理,无论服务器说它是什么。
所以:
如果收到错误消息,那将是一个成功的HTTP请求(因为错误是在数据级别而不是HTTP级别表示的),因此Ajax请求将成功。
如果您不收到错误消息,它也将是一个成功的HTTP请求,但响应将是HTML。 jQuery将尝试将HTML解析为JSON并失败。然后它会抛出错误处理程序。
您可以采取的解决方法包括:
window.open
到不同的 URL以实际获取文档。