同步Jquery Ajax调用

Synchronous Jquery Ajax Call

本文关键字:调用 Ajax Jquery 同步      更新时间:2023-09-26

如何确保只有在虚拟机中加载图书详细信息后才能在控制台中显示"Test Data"文本。书籍,基本上要执行同步ajax调用。

下面提到的代码没有按预期工作。有什么建议如何实现这个预期的功能吗?

$(document).ready(function() {
  var vm = new obj.Books();
  vm.loadBooks();
  console.log("Test Data");
});
var obj = obj || {};
obj.Books = function() {
  var self = this;
  self.books = [];
  self.loadBooks = function() {
    $.ajax({
        url: "somewebapiurl",
        dataType: 'jsonp',
        async: false
      })
      .done(function(data) {
        $.each(data, function(idx, item) {
          self.books.push(item);
        });
      })
      .fail(function(xhr, status, error) {
        alert(status);
      });
  };
};

如何确保"测试数据"文本只显示在控制台中在虚拟机中加载图书详细信息后。书,基本上是要表演的同步ajax调用。

只要利用jQuery延迟对象的.done函数。

self.loadBooks = function() {
  $.ajax({
    url: "somewebapiurl",
    dataType: 'jsonp',
  })
  .done(function(data) {
    $.each(data, function(idx, item) {
      self.books.push(item);
    });
    //do what you want or call the function you want
    console.log("Test Data");
  })
  .fail(function(xhr, status, error) {
    alert(status);
  });
};

@jcubic是对的,jsonp不支持async=false的同步调用

因此,

  • 启用服务端CORS(即somewebapiurl)
  • 设置原点细节(即原点="http://localhost:19410" headers="*")method ="get")
  • 删除数据类型='jsonp'
  • 保留异步= false