Javascript:调用阻止的HTTP POST

pie*_*r92 5 javascript jquery http

我有一个调用程序函数,该函数调用另一个发送带有参数的HTTP POST的函数。现在,我希望这个被调用的函数阻止执行,直到有它的“成功”为止(因此,当它的HTTP POST完成时)。

这是我的逻辑代码:

var fingerprint = null;
var janus_session = null;
var inserted = "false";

$(document).ready(function() {
      //stuff
      fingerprint = FindFingerprint(jsep);

      janus_session = janus.getSessionId();
      inserted = SendSDPLine(fingerprint, janus_session);
      console.log("**in MAIN: inserted= " + inserted);

      //other stuff
    }

function SendSDPLine(fingerprint, janus_session) {
  var sdp = fingerprint;
  //    var url = "http://localhost:8484/Shine/AccountController";
  var action_type = "InsertSDPLine";
  var sessionid = janus_session;

  $.ajax({
    type: "POST",
    url: url,
    xhrFields: {
      withCredentials: false
    },
    data: {
      "action": action_type,
      "sdpline": fingerprint,
      "sessionid": sessionid
    },
    success: function(data) {
      if (data == "INSERTED") {
        inserted = "true";
        console.log("in SENDSDPLINE: inserted= " + inserted);
      }
      return inserted;
      //        return checkFingerprint (fingerprint);
    },
    // vvv---- This is the new bit
    error: function(jqXHR, textStatus, errorThrown) {
      console.log("Error, status = " + textStatus + ", " +
                  "error thrown: " + errorThrown);
    }
  });

}
Run Code Online (Sandbox Code Playgroud)

简而言之,我希望other stuff在检查HTTP POST响应之后执行该命令。我已经看到了另一个问题:最初,插入具有false价值。在HTTP POST响应的成功(数据)中,它具有true价值。但是,在调用者函数中,下面console.logundefined价值。

所以,我有两个问题:

  1. 如何将此值返回给调用者函数
  2. 如何停止执行调用者函数,直到收到HTTP POST响应?

Ser*_*sev 2

如果您需要阻止执行直到 AJAX 返回,您可以async:false根据jQuery 文档在 ajax 参数中指定。