从节点 JavaScript 返回到 jQuery 的 Ajax 调用落在错误函数上

Posted

技术标签:

【中文标题】从节点 JavaScript 返回到 jQuery 的 Ajax 调用落在错误函数上【英文标题】:Ajax call returning from node JavaScript to jQuery lands on error function 【发布时间】:2018-11-20 14:50:41 【问题描述】:

我有 jQuery 作为客户端脚本和节点 javascript 服务器作为后端。

我曾经将请求发布到节点服务器以获取数据。请在下面找到我的 AJAX 调用。

我的问题是,即使我的响应设置为成功,它总是出现在 jquery.AJAX 方法的错误函数中。

错误对象看起来像

$.ajax(
        url : 'http://127.0.0.1:3000/uploadcontent/fileUpload',
        type : 'post',
        data : formData,
        enctype : 'multipart/form-data',
        processData : false,
        contentType : false,
        error : function(error,jqXHR, exception) 
            errorMessage(error);
            console.log(JSON.stringify(error))
            console.log(exception +"  :  "+error);
        ,
        success : function(data) 
            alert(data);
            if (data.sucess)
                successMessage(data.returnMessage);
             else 
                alert('error');
                if (data.returnObj != null) 

                 else
                    errorMessage(data.returnMessage);
                
            
        
    )

现在,在我的节点 JavaScript 路由下方找到上述请求。

app.post('/fileupload', function(req, res) 

    var fstream;
    var fileName, bunchId, standard, userKey, subject, unit, chapter, topic;
    req.pipe(req.busboy,function(err) 
        if(err) 
            console.log("ERROR: " + err.code + " (" + err.message + ")");
            return;
        
    );
    req.busboy.on('file', function (fieldname, file, filename) 
        console.log("Uploading: " + filename);          
        fstream = fs.createWriteStream(config.content_upload_path.pdf_path + filename + 'abc');         
        file.pipe(fstream,function(err) 
            if(err) 
                console.log('pipe error due to stream')
                console.log("ERROR: " + err.code + " (" + err.message + ")");
                return;
            
        );
        fstream.on('close', function () 
            fileName = filename;
            fileObject = file;       
            uploadFile(paramData, res)
            res.redirect('back');
            console.log('method complete')
        );

        fstream.on('error', function (err) 
            console.log('stream on error event')
            console.log(err)
            generateWebServiceResponse(res, false, null, 200, err)
            console.log(res);
            res.send()              
        );

    );

generateWebServiceResponse 方法如下所示:

function generateWebServiceResponse(response, isSuccess, result, httpStatus,
    returnMessage) 
response.json(
    isSucess : isSuccess,
    returnObj : result,
    returnMessage : returnMessage,
    resultCode : 0,
    httpStatus : httpStatus
);

即使在失败的情况下,它也应该使用isSuccess = false 进入成功函数。但在每种情况下,它都会出现在错误情况下。

我也无法解决附图中提到的访问来源错误。

【问题讨论】:

请检查:***.com/questions/19966707/cors-error-on-same-domain 【参考方案1】:

因为CORS 而发生。您必须为您的路线启用 CORS。最简单的方法是使用Node.js CORS middleware

【讨论】:

我在 app.js 中使用过 cors .. 比如 var cors = require('cors'); app.use(cors());我摆脱了那个访问来源错误......谢谢......现在,我定义的另一个问题是:返回对象是:对象:对象 好的..我得到了我想要的对象! ....但是....在 ajax.done() 事件中...不在 ajax.success() 事件中...可能是什么原因?

以上是关于从节点 JavaScript 返回到 jQuery 的 Ajax 调用落在错误函数上的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript-Tool:wdtree

jQuery对DOM节点进行操作(删除节点)

jQuery对DOM节点进行操作(删除节点)

从函数返回的访问数组 - javascript/jquery noob moment

javascript与jquery添加元素

从返回的节点的 Goutte 请求中提取特定的 xml