2013-07-14 2 views
0

Я есть следующая магистральная модельBackbone принести ударять неправильный 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'); 
    } 
}); 

, но это похоже на запрос get form.html, передающий fd as параметр. Я также попытался перекрывая метод синхронизации в 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)); 
    } 
} 

я делаю посты в других частях приложения с аналогичным кодом, так не могу понять, почему с этим кодом выборки делает запрос Добраться до страница, на которую она вызывается, а не сообщение на url, указанный в модели. У кого-нибудь есть идеи?

Спасибо, Derm

ответ

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'); 
     } 
    }); 
},