【问题标题】:AJAX POST request fails, but data is sentAJAX POST 请求失败,但发送了数据
【发布时间】:2025-12-01 06:45:01
【问题描述】:

我有一个 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();
            }
        });
    },

【问题讨论】:

  • javascript 是什么样的?请发布有问题的代码。
  • 如果没有代码示例和有关代码行为与您的预期有何不同的具体信息,我们无法解释可能出现的问题。
  • 你能把结果放上去吗?就像你从 Firebug 那里得到的一样?数据越多,我们就越容易提供帮助。

标签: jquery ajax post


【解决方案1】:

你总是可以通过注册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.

});

【讨论】: