.ajax仅在页面重新加载时执行(它正在尝试在执行任何其他操作之前加载URL)

时间:2017-07-12 09:09:48

标签: jquery ajax post

我有一个基本的Ajax请求(见下文),但它只在页面刷新时执行。

当我在Chrome中对此进行调试时,在刷新页面之前,onclick事件的断点不会被触发,我理解这是因为the page is waiting on something,但是如果查看“源”选项卡,它正在等待响应或者来自请求的URL中的某些内容 - 即使实际功能尚未运行。单击此按钮后,这仅显示在“源”选项卡中。为什么它等待URL(这是一个IP地址,它将数据发送到本地程序)在函数被命中之前被“调用”?如何阻止它进行“检查”?

Screenshot of network waterfall showing the page is waiting on the ip address as the URL

$("#gt").click(function() {
  $.post({
    url: 'http://127.0.0.1:13000',
    data: {
      'mediaType': 'giftTag',
      'giftTagMessage': 'Enjoy!'
    },
    success: function(json) {
      alert(json);
    },
    error: function(xhr, textStatus, errorThrown) {
      if (textStatus == 'timeout') {
        this.tryCount++;
        if (this.tryCount <= this.retryLimit) {
          //try again
          $.ajax(this);
          return;
        }
        return;
      }
      if (xhr.status == 500) {
        //handle error
      } else {
        //handle error
      }
    }
  });
});

我知道有很多[(solved) jQuery ajax form doesn't work个类似的请求],但不完全一样。没有处理AJAX抢先调用页面的问题。

1 个答案:

答案 0 :(得分:0)

这不是由AJAX本身造成的,而是其他程序没有足够快地将任何内容写回流中。