函数没有从ajax调用返回消息

本文关键字:调用 返回 消息 ajax 函数 | 更新日期: 2023-09-27 17:54:07

我希望我的函数,它做一个ajax调用控制器,从响应返回消息。

我试过这个,但它不起作用。怎样才能达到我的目标?有没有更好的解决办法?

var exists = personExists ();
   if (exists != null) {
      alert('The person already exists');
      return;
   }
var personExists = function () {
   var exists = false;
   var errorMsg = null;
$.ajax({
      url: "@Url.Action("PersonExist", "Person")",
      type: "POST",
      dataType: 'json',
      data: { name: self.name(), socialSecurityNumber: self.socialSecurityNumber() },
      async: false,
      contentType: "application/json",
      success: function (response) {
          if (response.exists) {
             exists = true;
             errorMsg = response.message;
          }
      }
 });
 if (exists)
   return errorMsg;
 return null;
};

函数没有从ajax调用返回消息

您可以使用回调函数;

var personExists = function (callback) {
   var exists = false;
   var errorMsg = null;
    $.ajax({
          url: "@Url.Action("PersonExist", "Person")",
          type: "POST",
          dataType: 'json',
          data: { name: self.name(), socialSecurityNumber: self.socialSecurityNumber() },
          async: false,
          contentType: "application/json",
          success: function (response) {
              if (response.exists) {
                 exists = true;
                 errorMsg = response.message;
                 callback(exists, errorMsg);
              }
          }
     });
     if (exists)
       return errorMsg;
     return null;
};

和使用;

personExists(function(exists, err) {
    if (exists != null) {
      alert('The person already exists');
      return;
   }    
});

简单地说,您可以将existserrorMsg传递给回调。有关回调函数的详细信息,请参阅此处

你需要使用一个回调:

function getErrorMessage(message) {
    //do whatever
}

AJAX请求内部:

$.ajax({
  url: "@Url.Action("PersonExist", "Person")",
  type: "POST",
  dataType: 'json',
  data: { name: self.name(), socialSecurityNumber: self.socialSecurityNumber() },
  async: false,
  contentType: "application/json",
  success: function (response) {
      if (response.exists) {
         exists = true;
         getErrorMessage(response.message); //callback
      }
  }

});