即使服务器返回成功,Ajax调用也始终触发失败处理程序

时间:2018-04-15 15:46:35

标签: ajax google-apps-script error-handling

以下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}]

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好消息。我能破解它。解决方案如下:

  1. 在有效负载
  2. 中设置回调函数
  3. 在新创建的回叫功能中进行虚拟操作
  4. 在创建jasonp响应时,在服务器端添加回调函数名称
  5. 客户方:

    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);
    
    解决这个问题很精彩。非常感谢您的亲切投入和鼓励。非常感谢。