【问题标题】:Getting html response from jsonp ajax call从 jsonp ajax 调用获取 html 响应
【发布时间】:2013-12-06 10:45:19
【问题描述】:

我很好奇为什么使用这个 ajax 调用:

   $.ajax({
      dataType: 'jsonp',
      type: 'GET',
      url: 'http://localhost:3000/gwsearch/ajax_search?d1=36354&d2=36355',
      crossDomain: true
  }).done(function(data){
    alert(data);
  });

到这个rails方法:

    def ajax_search
     #random code
      respond_to do |format|
        format.html
        format.js { render :json => @gw_search_results.to_json, :callback => params['callback'] }
     end

我收到一个 html 响应。如果我删除“format.html”,我会得到一个带有正确数据的 jsonp 响应,但我很好奇为什么 rails 默认选择发回 html 而不是 jsonp?我错过了什么?我想通过 js 调用,如果可用,它会返回一个 js 响应?

【问题讨论】:

标签: ruby-on-rails ajax jsonp


【解决方案1】:

【讨论】:

  • 我在控制器顶部有 response_to :html, :json 在任何方法之前,下面是在方法末尾,除非我删除 format.html,否则仍然会收到 html 响应。我想从请求中指定我想要一个 json 响应,我该怎么做? respond_with 做 |格式| format.html if params[:callback] format.js { render :json => {:items_by_tag => @gw_search_results.to_json}, :callback => params[:callback] } else format.json { render json: {:items_by_tag => @gw_search_results}} 结束结束
【解决方案2】:

弄清楚了,对于那些想知道的人,您的 respond_to 语句的顺序确实很重要。我不认为他们这样做了。这会产生一个 json 响应:

    respond_to do |format|
      if params[:callback]
        format.js { render :json => {:items_by_tag => @gw_search_results.to_json}, :callback => params[:callback] }
      else
        format.json { render json: {:items_by_tag => @gw_search_results}}
       end
    format.html
    end

它似乎达到了 jsonp 回调的条件,并把我需要的东西吐了出来,和以前一样,我有

    respond_to do |format|
    format.html
      if params[:callback]
        format.js { render :json => {:items_by_tag => @gw_search_results.to_json}, :callback => params[:callback] }
      else
        format.json { render json: {:items_by_tag => @gw_search_results}}
       end
    end

我猜它将 format.html 视为有效响应并产生该响应而不是 json。请注意,即使我将 ajax 调用中的请求标头更改为“application/json”,我仍然会收到带有问题代码的 html 响应,并在底部展示了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多