javascript - AJAX 回调从未调用,不成功或错误

标签 javascript jquery json ajax jsonp

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 脚本。因此,我使用了 eventListenerpreventDefault

GET 似乎工作正常,因为这些是我在浏览器中测试时得到的结果

响应 header 中的 JSON 是我要检索的 JSON。 但由于某种原因,我的 AJAX 中的成功或错误被调用,所以我无法访问 JSON。

最佳答案

我发现有两件事是不正确的:

  • JSON 响应数据在响应 header 中发送,而不是在响应正文中发送;
  • jQuery 正在执行 JSONP 请求,这意味着响应应该是有效的 Javascript (而不是 JSON),它应该调用提供的回调函数(如果没有被调用,jQuery 将不会'不知道请求已完成,因此 successerror 回调都不会被调用);

修复此问题取决于您是否需要 JSONP。如果没有,只需使用 json 作为数据类型,并确保 JSON 数据位于响应正文中。如果您确实需要 JSONP,您的 CGI 脚本应该提供有效的 JS 响应,如下所示:

jQueryXXX({ "content" : { "size" : ... } });

(其中 jQueryXXX 应该是 callback 查询字符串参数的值)

关于javascript - AJAX 回调从未调用,不成功或错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37098579/

相关文章:

java - JsonObject jar 文件

javascript - 忽略验证中隐藏的 div

javascript - AutoFocus TinyMCE Editor TextArea Inside Bootstrap Modal 显示模态时

java - 如何使用 Pig 检查 JSON 中缺少的 key ?

c# - 将 JSON 转换为具有值集的 C# 内联类

javascript - 无法在ajax中执行成功函数

javascript - Dojo Toolkit 中的代码重用

javascript - ie8 中的 e.preventDefault()

javascript - jQuery/JavaScript 变量作用域

javascript - 在javascript中获取超链接的值