2013-07-14 51 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'); 
     } 
    }); 
},