javascript - 访问 AJAX CORS 请求中的响应

标签 javascript jquery ajax cors

我正在尝试向我的 spring 后端发送 AJAX 请求。我正在敲击 Controller ,并成功响应。我对 javascript 和 AJAX 很陌生,所以我已经达到了无法突破的天花板。我试图在成功回调时调用“完成”,但收到一个非常非描述性的错误。这是我按下“按钮”后的控制台

clicked testAjax. js:3  
Uncaught SyntaxError: Unexpected token :  product:1

我还没有创建产品文件,但是当我进入它时,我得到了我试图在第 1 行(唯一的行)发回的对象:

{"name":"Matthew","id":0}

我的 AJAX 调用在下面。如何让返回对象进入我的“完成”函数?

另外,我还做错了什么吗?

$("button").click(function(){
    console.log("clicked");
    var request = $.ajax({
        type : "GET",
        url : ***The problem is not here, I am hitting the controller***
        dataType: "jsonp",
        crossDomain: true,
        success: done,
        });
    function done(obj, status, jqXHR){
        alert("in success function");
        console.log(obj);
        $("li#pName").append("matthew");
    };
});

最佳答案

您将 dataType 设置为 jsonp,但您直接输出 json 文本,jsonp 需要提供一个函数,即 someFn({"name":“马修”,“id”:0})

由于如果您不提供回调函数名称,jquery 会自动为回调函数名称附加一个随机名称,因此您需要捕获 callback GET 变量并回显由名为 的函数调用包装的 json 文本callback 变量中的名称。

不熟悉 spring,但是使用 php,这看起来像

$fnName = $_GET["callback"];
echo $fnName."(".json_encode($someDataObj).")";

更改您的后端以执行类似的操作,或将 dataType 更改为 json,以便它将解析直接的 json 文本。

关于javascript - 访问 AJAX CORS 请求中的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22154165/

相关文章:

javascript - 使用 onchange 输出生成的链接

jquery - Dom 节点操作,如何删除包裹我的选择的标签?

javascript - 我如何预加载与 onmouseover/onmouseout 一起使用的图像

javascript - 对从数据库检索的数据进行分页后,模式窗口将不会打开

javascript - IE 中 AJAX 请求错误,参数无效

javascript - 动态增加文本框高度?

javascript - Replace() 函数正则表达式失败并显示 "Invalid Character"

javascript - 用于获取当前登录用户的 Keycloak JavaScript API

javascript - $.post() 回调方法建议

c# - jQuery .load 似乎在意想不到的地方运行