AJAX 从未调用过回调,既不成功也不出错
AJAX callbacks never called, not succes nor error
document.getElementById('myform').addEventListener('submit', function (e) {
// voorkomt de standaard actie van de submit
e.preventDefault();
$(function () {
var artiest = document.getElementById("artiest");
var rijen = document.getElementById("rij");
var kolommen = document.getElementById("kolom");
var CGIurl = 'http://localhost:8000/cgi-bin/schuifpuzzel.py?artiest=' + artiest.value +
"&rijen=" + rijen.value + "&kolommen=" + kolommen.value + "&callback=jsonp";
$.ajax({
type: 'GET',
url: CGIurl,
dataType: "jsonp",
success: function(data){
console.log(data)
}
});
});
});
我正在尝试 运行 这个 AJAX 在按下 提交按钮 时执行我的 CGI 脚本。所以我使用了 eventListener
和 preventDefault
.
GET 似乎工作正常,因为这些是我在浏览器中测试时得到的结果
响应 headers 中的 JSON 是我要检索的那个。
但是由于某种原因,调用了我的 AJAX 中的成功和错误,所以我无法访问 JSON.
我看到有两件事是不正确的:
- JSON 响应数据在响应 headers 中发送,而不是响应 body;
- jQuery 正在执行 JSONP 请求,这意味着响应应该是有效的 Javascript(不是 JSON),它应该调用提供的回调函数(如果没有调用,jQuery 将不知道请求已经完成,因此
success
和 error
回调都不会得到称为);
解决此问题取决于您是否需要 JSONP。如果不是,只需使用 json
作为数据类型并确保 JSON 数据在响应正文中。如果你确实需要 JSONP,你的 CGI 脚本应该提供一个有效的 JS 响应,它看起来像这样:
jQueryXXX({ "content" : { "size" : ... } });
(其中 jQueryXXX
应该是 callback
查询字符串参数的值)
document.getElementById('myform').addEventListener('submit', function (e) {
// voorkomt de standaard actie van de submit
e.preventDefault();
$(function () {
var artiest = document.getElementById("artiest");
var rijen = document.getElementById("rij");
var kolommen = document.getElementById("kolom");
var CGIurl = 'http://localhost:8000/cgi-bin/schuifpuzzel.py?artiest=' + artiest.value +
"&rijen=" + rijen.value + "&kolommen=" + kolommen.value + "&callback=jsonp";
$.ajax({
type: 'GET',
url: CGIurl,
dataType: "jsonp",
success: function(data){
console.log(data)
}
});
});
});
我正在尝试 运行 这个 AJAX 在按下 提交按钮 时执行我的 CGI 脚本。所以我使用了 eventListener
和 preventDefault
.
GET 似乎工作正常,因为这些是我在浏览器中测试时得到的结果
响应 headers 中的 JSON 是我要检索的那个。 但是由于某种原因,调用了我的 AJAX 中的成功和错误,所以我无法访问 JSON.
我看到有两件事是不正确的:
- JSON 响应数据在响应 headers 中发送,而不是响应 body;
- jQuery 正在执行 JSONP 请求,这意味着响应应该是有效的 Javascript(不是 JSON),它应该调用提供的回调函数(如果没有调用,jQuery 将不知道请求已经完成,因此
success
和error
回调都不会得到称为);
解决此问题取决于您是否需要 JSONP。如果不是,只需使用 json
作为数据类型并确保 JSON 数据在响应正文中。如果你确实需要 JSONP,你的 CGI 脚本应该提供一个有效的 JS 响应,它看起来像这样:
jQueryXXX({ "content" : { "size" : ... } });
(其中 jQueryXXX
应该是 callback
查询字符串参数的值)