即使从服务器端返回成功值,以下JavaScript也会始终触发失败处理程序:
$.ajax(payload)
.done(function(data, statusText, jqxhr) {
document.getElementById('myModal').innerHTML = "<p>Record Saved ... </p>";
modal.style.display = "block";
refresh_html_page(document.getElementById("sheetname").value);
})
.fail(function(jqxhr, statusText, errorThrown) {
document.getElementById('myModal').innerHTML = "<p>Record Not Saved ... </p>";
modal.style.display = "block";
refresh_html_page(document.getElementById("sheetname").value);
})
.always(function () {
// Re-enable the inputs
$inputs.prop("disabled", false);
});
返回的JSON字符串:
[{“结果”:“成功”,“行”:11}]
有什么想法吗?
最佳答案
好消息。我能够破解它。解决方法如下:
客户端:
function handleJSONPResponse(data, status, request) {
console.log('response', data);
}
// Fire off the request to /form.php
var payload = {
crossDomain: true,
url: "https://script.google.com/macros/s/XXXXXXXXXXXXXXXXX/exec",
method: "POST",
dataType: "jsonp",
data: serializedData,
jsonpCallback: 'handleJSONPResponse'
};
服务器端(e是从客户端发送的有效负载):
return ContentService
.createTextOutput(e.parameters.callback + '(' + JSON.stringify({"result":"success", "row": nextRow})+ ')')
.setMimeType(ContentService.MimeType.JAVASCRIPT);
解决问题真是太好了。非常感谢您的投入和鼓励。非常感激。
关于ajax - 即使服务器返回成功,Ajax调用也总是触发失败处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49843803/