2013-07-14 40 views
0

我有以下骨干模型骨干取击中了错误的URL

define(["jquery", "underscore", "backbone"], 
    function ($, _, Backbone) { 
     var file_upload = Backbone.Model.extend({ 
     url: 'http://localhost:8080/rest/customForms' 

    }); 

    return file_upload; 
} 

我在加载视图

本地主机:38559 /应用/ forms.html

它试图用下面的代码做一个职位

var fd = document.getElementById('fileToUpload').files[0]; 
var file = new file_upload(); 
file.fetch({data: $.param({fileToUpload: fd}), 
    type: 'POST', 
    success: function(d){ 
     console.log('success'); 
    } 
}); 

但这似乎只是做一个获取请求forms.html传递fd作为一个参数。我也试着重写在file_upload

sync: function (method, model, options) { 
    var self = this; 
    options = _(options).clone(); 

    var error = options.error; 
    options.error = function (jqXHR, textStatus, errorThrown) { 
     alert('error'); 
     if (error) 
      error(jqXHR, textStatus, errorThrown); 
    }; 

    var success = options.success; 
    options.success = function (data, textStatus, jqXHR) { 
     if (success && data) { 
      alert("Success uploading form."); 
      success(data, textStatus, jqXHR); 
     } 
     else 
      alert("Error uploading form. Please try entering again."); 
     }; 

     var params = { 
      type: 'POST' 
     }; 
     $.ajax(_.extend(params, options)); 
    } 
} 

我在做与类似的代码的应用程序的其他部分职位的同步方法,因此想不通,为什么这个代码的获取做一个GET请求到页面被调用,而不是发布到模型中指定的url。有没有人有任何想法?

感谢, 香薰

回答

0

哎 - 终于找到回来这个问题。文件上传是在按钮点击事件上完成的。我需要调用preventdefault来强制使用模型url而不是页面url。讨厌的问题 - 不知道我错过了它!现在的代码是

uploadForm: function (e) { 
    e.preventDefault(); 
    var self = this; 
    var fd = document.getElementById('fileToUpload').files[0]; 
    var file = new file_upload(); 
    file.fetch({data: $.param({fileToUpload: fd}), 
     type: 'POST', 
     success: function(d){ 
      console.log('success'); 
     } 
    }); 
},