Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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
Javascript 上传图像时如何获取图像路径_Javascript_Knockout.js_Knockout 2.0 - Fatal编程技术网

Javascript 上传图像时如何获取图像路径

Javascript 上传图像时如何获取图像路径,javascript,knockout.js,knockout-2.0,Javascript,Knockout.js,Knockout 2.0,我有一个上传图像的要求,下面是HTML代码 <div class="fileupload fileupload-new" data-provides="fileupload" align="center"> <div data-bind="if: doctor.imgSrc"> <div class="fileupload-new thumbnail" style="width: 150px;

我有一个上传图像的要求,下面是HTML代码

<div class="fileupload fileupload-new" data-provides="fileupload" align="center">
                <div data-bind="if: doctor.imgSrc"> 
                    <div class="fileupload-new thumbnail" style="width: 150px; height: 150px;"><img data-bind="attr: { src: doctor.imgSrc }"/></div>
                </div>
                <div data-bind="ifnot: doctor.imgSrc">

                    <div data-bind="if: doctor.imagePath">
                    <div class="fileupload-new thumbnail" style="width: 150px; height: 150px;"><img data-bind="attr: { src: doctor.imagePath }"/></div>
                </div>
                <div data-bind="ifnot: doctor.imagePath">
                <div class="fileupload-new thumbnail" style="width: 150px; height: 150px;"><img src="${pageContext.request.contextPath}/resources/ui_resources/img/profile_pic.png" /></div>
                </div>
                </div>
                <div class="fileupload-preview fileupload-exists thumbnail" style="max-width: 150px; max-height: 150px; line-height: 20px;"></div>
                <div>
                <span class="btn btn-file"><span class="fileupload-new">Select image</span><span class="fileupload-exists">Change</span><input type="file" data-bind=" file: doctor.imgFile, fileObjectURL: doctor.imgSrc"/></span>
                <a href="#" class="btn fileupload-exists" data-dismiss="fileupload">Remove</a>
                </div>
            </div>
现在我有了一个保存按钮,当它被点击时,它调用以下函数

$('#saveButton').click(function(){ 
alert('savebutton'); 
var testjson=ko.toJSON(viewModel.doctor); 
console.log(testjson);
});
问题是我没有在json中获得imagepath、imgsrc和imgfile

这是json

{"id":2,"name":"doc2","degree":"DA(Anaesthesia)","gender":"Female","username":"doc","password":"doc","email":"doc1@doc1.com","mobile":"12345678901","imgSrc":"imagePathValue","imagePath":"imagePathValue","userid":11,"department":"Bio-Chemistry","schedules":[{"id":"0","day":"Monday","fromtime":"17:21","totime":"18:21","hospitalId":5,"hospital":"Yashoda"},{"id":"1","day":"Tuesday","fromtime":"05:23","totime":"12:18","hospitalId":5,"hospital":"Yashoda"},{"id":"2","day":"Wednesday","fromtime":"11:23","totime":"12:23","hospitalId":5,"hospital":"Yashoda"},{"id":"3","day":"Thursday","fromtime":"17:27","totime":"18:27","hospitalId":46,"hospital":"Sai Bhavani"},{"id":"4","day":"Friday","fromtime":"10:30","totime":"12:30","hospitalId":46,"hospital":"Sai Bhavani"}]} 
谁能指出我犯的错误吗

更新

以下是文件的自定义绑定

var windowURL = window.URL || window.webkitURL;

ko.bindingHandlers.file = {
    init: function(element, valueAccessor) {
        $(element).change(function() {
            var file = this.files[0];
            if (ko.isObservable(valueAccessor())) {
                valueAccessor()(file);
                formdata.append("image",file);
            }
        });
    },

    update: function(element, valueAccessor, allBindingsAccessor) {
        var file = ko.utils.unwrapObservable(valueAccessor());
        var bindings = allBindingsAccessor();

        if (bindings.fileObjectURL && ko.isObservable(bindings.fileObjectURL)) {
            var oldUrl = bindings.fileObjectURL();
            if (oldUrl) {
                windowURL.revokeObjectURL(oldUrl);
            }
            bindings.fileObjectURL(file && windowURL.createObjectURL(file));
        }

        if (bindings.fileBinaryData && ko.isObservable(bindings.fileBinaryData)) {
            if (!file) {
                bindings.fileBinaryData(null);
            } else {
                var reader = new FileReader();
                reader.onload = function(e) {
                    bindings.fileBinaryData(e.target.result);
                };
                reader.readAsArrayBuffer(file);
            }
        }
    }
};

我的猜测是,用于初始化
Doctor
data
参数不包含
imgFile
属性。因此,您正在未定义的
上创建一个可观察的
——它不会在JSON中显示

imgFile
分配更改为:

this.imgFile = ko.observable(data['imgFile'] || '');

另外,
imgSrc
imgPath
都从
数据['imagePath'中获取数据
--这是复制/粘贴错误吗?

请发布
文件和
文件对象URL
自定义绑定的代码,而不是发布您的
医生
视图模型及其所有完全不相关的属性@nemesv请现在查看,如果您需要更多代码,请告诉我答案,+1.问题在于formdata。我使用了2 formdata1和formdata。在formdata1中,我正在发送图像,在formdata中,我正在添加表单详细信息并提交formdata。因为它没有附加图像,所以json就是这样。但是感谢answser,所以Upvoted您的自定义绑定处理程序既不引用imagePath,也不引用formdata所以我认为这与你的问题无关。通过将imagePath(或imgSrc)设置为“未定义”,它将不会出现在JSON中。如果您解决了这个问题,您的JSON将按照您的要求显示。
this.imgFile = ko.observable(data['imgFile'] || '');