Ajax请求将冻结我的Javascript代码

Ajax request will freeze my Javascript code

本文关键字:Javascript 代码 我的 冻结 请求 Ajax      更新时间:2023-09-26

我有一个Ajax请求:

$.ajax({
    url: '/test/start_images_stream',
    type: "GET",
    data : { image_id: tst },
    dataType: "json",
    complete: function (data_response) {
        status = data_response.responseText; 
        console.log("The response was: "+status);
        stream_images();
    }
});

这似乎冻结了我的javascript。它停留在ajax请求上,不会继续到stream_images((。

在我的服务器上,我得到了这个:

  def start_images_stream
  #ajax request parameters
  tst=params[:image_id]
  start_method
  respond_to do |format|
    format.json  { render :json => "OK"}
  end 
  end

"start_method"有一个循环。。做,永远不会结束!我知道这可能就是问题所在。因此,我将ajax请求更改为POST请求:

$.ajax({
    url: '/test/start_images_stream',
    type: "POST",
    data : { image_id: tst },
    dataType: "json",
    complete: function () {
        stream_images();
    }
});

并调整了我的服务器代码。现在ajax请求似乎再次冻结了我的主线程。我只想对服务器说,启动"函数a"产生无限数量的图像,就这样。然后Javascript读取文件并在HTML页面上列出它们。

似乎不起作用

我认为你的完整功能:

complete: function () {
        stream_images();
    }

应该在成功属性中工作,就像这样:

success: function () {
        stream_images();
    }
status = data_response;

回调将结果作为参数(如果指定了json,则为字符串或对象(传递,它没有responseText属性。

jQuery对这些东西进行了抽象,所以您不必担心知道responseText属性,只需得到结果即可。