1
我想創建Web表單,當提交時將創建一個couchdb文檔並將附件添加到文檔。我從教程/其他論壇看過,有必要用兩個階段的過程來做到這一點(就像被子一樣)。我可以獲取文件上傳,但似乎無法獲取附件上傳。我已經嘗試了多種方法,目前我做這樣的事情:CouchDB文檔附件通過html表單和jquery
HTML文件:
<!DOCTYPE HTML>
<html>
<head>
<title>Document submission</title>
<style type="TEXT/CSS" media="all">
</style>
</head>
<body>
<table>
<form id="form" name="form" action="">
<tr>
<td>Field</td>
<td><input type="text" required="required" name="field">
<span id="required">*</span></td>
</tr><tr>
</tr><tr>
<td></td><td><button type="button" id="submit">Select Attachment</button><td>
</tr>
</form>
</table>
</body>
<script src="/_utils/script/json2.js"></script>
<script src="/_utils/script/jquery.js"></script>
<script src="/_utils/script/jquery.couch.js"></script>
<script src="/_utils/script/jquery.form.js"></script>
<script src="/_utils/script/jquery.dialog.js"></script>
<script type="text/javascript" src="basic.js"></script>
</html>
,然後一個名爲basic.js有:
function create_document(){
var db_name = 'uploader';
var db = $.couch.db(db_name);
var data={}
data['fname']=document.form.field.value;
db.saveDoc(data, {
success: function (data) {
add_attachment(db,data);
},
error: function() {
alert("Cannot save the thread.");
}
});
}
function add_attachment(db,data){
var docID = data.id;
var dbName = db.name;
var form = $("#upload-form");
$.showDialog("dialogue.html", {
load: function(elem) {
$("input[name='_rev']", elem).val(data._rev);
},
submit: function(data, callback) {
if (!data._attachments || data._attachments.length == 0) {
callback({_attachments: "Please select a file to upload."});
return;
}
var form = $("#upload-form");
form.find("#progress").css("visibility", "visible");
form.ajaxSubmit({
url: db.uri + $.couch.encodeDocId(docID),
success: function(resp) {
form.find("#progress").css("visibility", "hidden");
location.href = "?" + encodeURIComponent(dbName) +
"/" + $.couch.encodeDocId(docID);
}
});
}
});
}
$(document).ready(function() {
$("button#submit").click(function(event) {
create_document();
});
});
這種JavaScript很大程度上取自futon.browse.js uploadAttachment細分市場。 dialogue.html文件也只是couchdb的www/dialog/_upload_attachment.html的直接副本。然後將所有文件(主html,basic.js和dialogue.html)上傳到CouchDB設計文檔(在名爲uploader的數據庫中)。
該文檔創建正常,但不管我做什麼,附件永遠不會被保存。我試過的各種方法要麼導致關於多部分表單的錯誤,要麼在這種情況下根本沒有可察覺的錯誤。
有誰知道我在做什麼錯?