2

我有一个 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' 有一个循环..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 页面上列出它们。

它似乎不起作用

4

2 回答 2

3

我认为你的完整功能:

complete: function () {
        stream_images();
    }

应该在success属性中才能工作,就像这样:

success: function () {
        stream_images();
    }
于 2012-12-21T13:05:50.857 回答
0
status = data_response;

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

jQuery 抽象了这些东西,所以你不必担心知道responseText属性,你只需要得到结果。

于 2012-12-21T12:51:12.130 回答