记录:用ajax向后端GET数据并且应用到前端

以前做的二维码功能有一点不合理的地方,在创建简历的时候生成了二维码,但是想要用扫描二维码查看简历的话,就需要简历有HTML的版本(二维码产生的地址其实就是当前简历的HTML版本地址)。这就需要在编辑器页面,点击完成并保存再点击生成二维码才要有真正的二维码显示出来。以前我在前端写了一个判断(如果resume的二维码和HTML都存在才可以显示二维码),因为保存html的方法是ajax传向后端的,不刷新页面。所以当前的页面并不知道你resume已经有了html。所以需要刷新页面resume的参数才会被从新的load出来。但是这样非常的蠢,昨天写了一个5秒的一个ajax请求(得到网站登录人数),就想是否能用同样的方法来去让二维码局部去请求ajax更新,虽然代码是奏效的,用alert的方法查看返回来的参数,如果是render json: @resumealert的结果是Object object,不知道怎么把请求的数据更新到我想要的模块里面去,尝试过innerHTML,load都是把传过来的data显示在模块里面,而不是起到更新判断的作用。请教过同学后,得到了一种解法,就是把判断拿到后端去,然后判断得到的参数在用json的格式传回前端。ajax用GET到的参数对前端页面进行修改,而不是用ajaxGET数据后在前端进行判断。下面的controller里面的GET方法,传出params[:show]这个数据。

 def preview
        (@resume = current_user.resumes.find_by_id(params[:resume_id])) || not_found
        if @resume.resume_html.present? && @resume.qrcode_image.present?
            params[:show] =  true
        else
            params[:show] =  false
        end
        respond_to do |format|
            format.html
            format.json { render json: params[:show] }
            format.pdf do
                render pdf: 'resume.pdf',
                template: 'user/resumes/preview.pdf.erb',
                layout: 'preview_layout.html.erb'         
            end
        end
    end

然后ajax用得到的数据进行操作。

 $('#qr-code').click(function(){
    $.ajax({
        type:"GET",
        url:"<%= user_resume_preview_path(@resume) %>",
        dataType:"json",
        success:function(result){
          if (result == true){
            $("#show_qrcode").removeClass("hide")
            $("#show_notice").addClass("hide")
          }
          if (result == false){
            $("#show_notice").html("<h4>点击保存按钮才能生成二维码</h4>")
          }
        }
        })
  });

如果得到的结果是true就去掉hide把二维码显示出来,如果得到是false就在相应的ID里面加入HTML内容。


功能是做出来了,但是对ajax的请求到的数据如何出来还是不太清楚,如果请求到多个参数要如何把参数分割进行操作呢? 我以前的想法是否有方法去时间呢?