首页 > 解决方案 > “请求的资源上不存在 'Access-Control-Allow-Origin' 标头”(未捕获的 SyntaxError:意外的标识符)

问题描述

我有以下ajax调用

var response = "";
//Ajax call to the DB server
var target_url = "http://SomeIP/db/*create_table*?token=1234qwer&table_name="+table_name+"&array_of_fields={"+final_fields+"}";
function hit_db(callback)
{
    $.ajax({
        url: target_url,
        type: 'GET',
        async: true,
        crossDomain: true,
        success: callback,
        });
}
hit_db(function(data){
    response = data;
    alert(response);
});

但是alert(reponse)显示正确的输出应该是什么undefined时候ERROR table already exists

但是,当我检查我的开发人员时。工具我看到以下

在此处输入图像描述

如果我单击 Uncaught SyntaxError 的链接,它会将我带到显示正确输出的此页面

在此处输入图像描述

为什么我想在那个 Unexpected Identifier 中得到正确的输出,但我得到 undefined alert(response)?任何可能的修复?

编辑 - - -

这是一些简化的代码和响应

function hit_db(callback)
{
    $.ajax({
        url: target_url,
        type: 'GET',
        success: callback,
        });
}
hit_db(function(data){
    response = data;
    console.log(response);
});

在此处输入图像描述

---网络选项卡 在此处输入图像描述 在此处输入图像描述

谢谢!!

标签: javascriptjqueryajaxgoogle-chrome

解决方案


您能否将代码编辑为一个简单的 ajax 调用并检查控制台它的响应。因为如果它只是在浏览器上工作,我希望它是一个通常的获取请求。

function hit_db()
{

$.ajax({
  url: target_url,
}).done(function(resp) {
  console.log(resp)
});

}
hit_db();

编辑:问题是由于跨域请求。您必须将 'Alloww-cross-orgin-request':* 添加到您的服务器响应中,或者您可以通过在浏览器中传递它来执行此操作。如果在您的浏览器中绕过它不是一个选项,我会说您需要阅读此链接中浏览器完成的跨源检查的不同条件检查


推荐阅读