Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 主干提取命中错误的url_Backbone.js_Model_Fetch - Fatal编程技术网

Backbone.js 主干提取命中错误的url

Backbone.js 主干提取命中错误的url,backbone.js,model,fetch,Backbone.js,Model,Fetch,我有以下骨干模型 define(["jquery", "underscore", "backbone"], function ($, _, Backbone) { var file_upload = Backbone.Model.extend({ url: 'http://localhost:8080/rest/customForms' }); return file_upload; } 我有一个视图加载在 localhost:385

我有以下骨干模型

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

    });

    return file_upload;
}
我有一个视图加载在

localhost:38559/app/forms.html

它尝试使用以下代码执行post

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执行一个get请求,并将fd作为参数传递。我还尝试覆盖文件上传中的同步方法

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));
    }
}
我正在应用程序的其他部分使用类似的代码发布帖子,所以我不明白为什么使用这段代码,fetch会对调用它的页面执行get请求,而不是发布到模型中指定的url。有人有什么想法吗

谢谢,
Derm

呃-终于找到了问题的根源。文件上载是在按钮单击事件中完成的。我需要调用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');
        }
    });
},