2012-01-31 54 views
0

服务器端,我用下面的函数(用作espressjs中间件)如何发送我的jQuery的形式node.js的连接形式

function objCreation(req, res, next){ 
    req.form.complete(function(err, fields, files){ 
    if (err) { 
     next(err); 
    } else { 
     // Set params in request 
     obj = {}; 
     obj.label = fields.label; 
     // Check if picture is provided 
     if(files.image){ 
      // Move file to correct dir 
      var fs = require("fs"); 
      var folder = '/var/images/'; 
      var src = files.image.path; 
      var filename = files.image.name; 
      var target = folder + filename; 

      obj.filename = filename; 
      req.obj = obj; 

      fs.rename(src, target, function (status) { 
      next(); 
      }); 
     } else { 
      obj.filename = 'nofile'; 
      req.obj = obj; 
      next(); 
     } 
    } 
    }); 
} 

基本上,它收到提交的表单字段。该功能使用“连接形式”node.js模块。

客户端,我使用输入文本:

<input id="new_obj" type="text" placeholder="New"/> 

和回调触发时回报打在此输入:

// Add callback for object creation 
$('#new_obj').keypress(function(e){ 
    if (e.which == 13){ 
    createObj(); 
    } 
}); 

的CREATEOBJ功能是下列之一:

function createObj(){ 
$.ajax({ 
    url: "/object/create/", 
    type: "POST", 
    data: { label : "label" }, 
    success: function(obj) { 
    console.log(obj); 
    }, 
    error: function(jqXHR,status,errorThrown) { 
    alert(jqXHR.responseText + '-' + status + '-' + errorThrown); 
    } 
}); 
} 

我没有办法让最后一部分以正确的格式发送表单,所以它被处理服务器方法。我不想更改服务器端,因为它已被其他一些客户端使用(iOS客户端使用ASIFormDataRequest发送表单)。

我目前正在看看ajaxForm jQuery插件,看看这可以帮助。

+0

您需要使用multipart

Prashanth 2012-02-02 05:44:33

回答

0

我设法通过使用不再使用connect-form的expressjs的最后一个版本来解决此问题(不建议使用),而是使用强大的替代方法。