我正在尝试向我的 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/