AJAX回调从未调用,不是成功也不是错误

时间:2016-05-08 10:03:46

标签: 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似乎工作正常,因为这些是我在浏览器中测试时得到的结果

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

1 个答案:

答案 0 :(得分:2)

我可以看到两件事是不正确的:

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

修复此问题取决于您是否需要JSONP。如果没有,只需使用json作为数据类型,并确保JSON数据在响应正文中。如果你确实需要JSONP,你的CGI脚本应该提供一个有效的JS响应,看起来像这样:

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

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