Ajax请求将冻结我的Javascript代码

Ajax请求将冻结我的Javascript代码,javascript,jquery,html,ruby-on-rails-3,Javascript,Jquery,Html,Ruby On Rails 3,我有一个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 w

我有一个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请求上,不继续流式处理图像()

在我的服务器上,我得到了以下信息:

  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_方法”有一个循环..do,它永远不会结束!我知道这可能是问题所在。因此,我将ajax请求更改为POST请求:

$.ajax({
    url: '/test/start_images_stream',
    type: "POST",
    data : { image_id: tst },
    dataType: "json",
    complete: function () {
        stream_images();
    }
});
并使我的服务器代码适应它。现在ajax请求似乎又冻结了我的主线程。 我只想对服务器说,启动“函数a”生成无限数量的图像,就这样。然后Javascript读取文件并在HTML页面上列出它们

它似乎不起作用

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


jQuery抽象了这类内容,因此您不必担心知道
responseText
属性,只需得到结果即可。

我认为您的完整功能:

complete: function () {
        stream_images();
    }
应该在成功属性中工作,就像这样:

success: function () {
        stream_images();
    }

因此,如果您在$.ajax块之外添加代码,那么在处理ajax请求时不会调用该代码?我只是想确定你的线程真的被冻结了。。。另外,您是否尝试过在服务器端更改程序,使其只返回一个简单的字符串,以消除该端的任何算法问题?好的,我将尝试您的想法。如果我将其放置在外部,它会工作。谢谢最后一个问题,ajax请求是否继续执行?ajax请求继续执行,但会在一段时间后超时(超时时间取决于您的服务器配置)。这就是为什么必须将代码放入回调中,因为请求是异步运行的(在后台)。