我发现我的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命令时,它确实正确显示。日志中没有出现其他错误。
答案 0 :(得分:0)
答案最终没有使用done / fail / always,并回到ajax调用本身内所谓的较旧的'success'元素。
$.ajax({
type: 'POST',
url: 'https://..../clientToStations.php',
data: {
ident: $("option:selected", this).val()
},
success: function(html) {
....
}
});
我还将'data'参数更改为对象而不是构建的字符串,但这与实际问题无关。