使用Remotipart解析错误 [英] Parse error using Remotipart

查看:94
本文介绍了使用Remotipart解析错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用remotipart上传和使用AJAX,问题是升级的图像,当我编辑项目,AJAX更新数据,但remotipart(https://github.com/leppert/remotipart)返回一个解析错误'为图像更新。

I'm using remotipart to upload and upgrade images using ajax, the problem is when I edit an item, ajax updates the data, but remotipart(https://github.com/leppert/remotipart) returns a 'parse error' for image update.

这是我的表怎么是这样的:

This is how my form looks like:

= form_for(Achievement.new), html: {multipart: true , remote: true} do |f|
          = f.text_field :name
          = f.text_area :description
          = f.file_field :image
          = f.submit 'Send'

我使用一个表单创建,编辑和删除的成就。这是我的JS:

I'm using a single form to create, edit and delete the 'Achievements'. Here's my js:

constructor: ->
    $('.edit_button').click ->
      $.ajaxSettings.dataType = "json"
      @id = $(this).data('id')
      @content = $(this).parent()
      @name = $('.form_achievement #name')
      @description = $('.form_achievement #description')
      @image = $('.form_achievement .avatar img')
      @button = $('.form_achievement form input:submit')
      @form = $('.form_achievement form')

      #Load data to edit on form
      $.ajax
        type: 'get'
        url: "/en/private/achievements/#{@id}/edit/"

        success: (data) =>
          alert 'edit'
          @name.val(data.achievement.name)
          @description.val(data.achievement.description)
          @stat.html(data.achievement.stat)
          @value.val(data.achievement.value)
          @image.prop 'src', data.image

        #Change method of the form to put and bind event  
        $.ajaxSettings.dataType = "json"
        @form.attr('method','put')
        $('.form_achievement form').attr('action', "/en/private/achievements/#{@id}")
        $('#achievement_form.accordion .form_achievement').unbind('click', NewAchievement)

        @form.bind 'ajax:success', (xhr, data, status) =>
          @content.slideUp 'slow', ->
            $(this).remove()
          alert 'Edit'

        @form.bind 'ajax:error', (event, response, error) =>
          alert error
        @button.bind 'change', => @changeButton()


        error: (data) ->
          alert 'error'

  changeButton: ->
    @form.submit()

这解决了我的问题,当我试图做没有改变图像的编辑,但是当我做编辑试图升级到一个新的形象,返回我一个解析错误。谁能帮助我?

This solves my problem when I'm trying to do an edit without change image, but when I do an edit trying to upgrade to a new image, returns me a 'parse error'. Can anyone help me?

推荐答案

你很可能得到一个解析错误,因为你的反应实际上是HTML。

You're very likely getting a parse error because your response is actually HTML.

现在的问题是,默认情况下remotipart假定服务器的响应是JS。您可以呈现形式,在您的案件时所设置的数据类型:

The problem is that by default remotipart assumes the server response was JS. You can set the data type when rendering the form, in your case:

form_for(Achievement.new), html: {:'data-type' => :html, :multipart => true, :remote => true}

或者也可以在JS来完成,像这样:

Or it can be done in JS like so:

@form.bind 'ajax:remotipartSubmit', (event, xhr, settings) =>
    settings.dataType = "html *"

这篇关于使用Remotipart解析错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆