0

我发现我的 ajax 方法实际上从未被调用过。我正在使用这段代码:

$("#client").change(function(e) {   
    var url = 'https://...../clientToStations.php';
    var data = 'ident=' + $("option:selected", this).val()

    alert("curl -X POST -d " + data + ' ' + url);

    $.ajax({
        type: POST,
        url: url,
        data: data,
    }).done(function(html) {
        alert('Done');
        $("#station").html(html).removeAttr('disabled');
    }).fail(function( jqXHR, textStatus, errorThrown ) {
        alert('fail');
    }).always(function () {
        alert('always');
    });
});

我确实在我期望的地方看到了警报。如果我将 curl 命令复制/粘贴到我的终端中,我会得到我期望的确切数据。但是,没有一个 done/fail/always 方法在这里受到影响。

然后我编辑了 clientToStations.php 来做一个 error_log() 只是说它被调用了。当 ajax “运行”时,该消息永远不会出现在我的 apache 错误日志中。当我手动运行 curl 命令时,它会正确显示。日志中没有出现其他错误。

4

1 回答 1

0

答案最终不是使用完成/失败/总是,而是回到 ajax 调用本身内部的所谓较旧的“成功”元素。

    $.ajax({
        type: 'POST',
        url: 'https://..../clientToStations.php',
        data: {
            ident: $("option:selected", this).val()
        },
        success: function(html) {
            ....
        }
    });

我还将“数据”参数更改为对象而不是构建字符串,但这与实际问题无关。

于 2013-09-21T06:46:40.747 回答