AJAX POST请求失败,但数据已发送

时间:2014-06-04 23:42:31

标签: jquery ajax post

我有一个AJAX帖子请求,要求将一些JSON发送到服务,但我无法让它完全正常工作。 数据到达服务并保存,但我的功能就像没有成功一样,并返回我的所有错误消息。

有人可以解释一下为什么会这样吗? 我搜索过,找不到任何可以解释原因的内容。

saveDate: function ($target) {
        var values = $target.data("DateRangesWidget").options.values;
        var beginDate = values.dr1from.split("/");
        var endDate = values.dr1to.split("/");
        var compareBeginDate = values.dr2from.split("/");
        var compareEndDate = values.dr2to.split("/");
        var date = {
            "ID": 1,
            "BeginDate": (beginDate[2] + '-' + beginDate[1] + '-' + beginDate[0]),
            "EndDate": (endDate[2] + '-' + endDate[1] + '-' + endDate[0]),
            "Aggregation": values.aggregation,
            "Comparative": values.comparisonEnabled,
            "ComparationType": values.comparisonPreset,
            "ComparativeBeginDate": (compareBeginDate[2] + '-' + compareBeginDate[1] + '-' + compareBeginDate[0]),
            "ComparativeEndDate": (compareEndDate[2] + '-' + compareEndDate[1] + '-' + compareEndDate[0])
        }
        jQuery.support.cors = true;
        $.ajax({
            url: 'http://localhost:9000/json/1',
            cache: false,
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            data: JSON.stringify(date),
            dataType: 'json',
            success: function (data) { //não funciona pq??
                //console.log('added');
                location.reload();
            },
            error: function (xhr, textStatus, errorThrown) {
                console.log(errorThrown);
                console.log(xhr);
                console.log(textStatus);
                //location.reload();
            }
        });
    },

1 个答案:

答案 0 :(得分:0)

你总是可以通过注册jqXHR对象的事件来获得结果,比如done / fail / always / then事件,$ .post方法将返回一个jqXHR对象。

详细文档请参阅:

http://api.jquery.com/jQuery.ajax/#jqXHR

因此,如果您正在测试响应详细信息,则可以使用以下代码:

$.post(url, data).always(function(data|jqXHR, textStatus, jqXHR|errorThrown) {

    // do something here.

});