简体   繁体   English

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

[英]Ajax call returning from node JavaScript to jQuery lands on error function

I have jQuery as client script and node JavaScript server as back-end. 我将jQuery作为客户端脚本,将节点JavaScript服务器作为后端。

I used to post the request to node server for getting data. 我曾经将请求发布到节点服务器以获取数据。 Please find my AJAX call below. 请在下面找到我的AJAX电话。

My problem is even if my response is set to success it always comes in error function of the jquery.AJAX method. 我的问题是,即使我的响应设置为成功,它也总是出现在jquery.AJAX方法的错误函数中。

And error object looks like 错误对象看起来像

在此处输入图片说明

$.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);
                }
            }
        }
    })

Now, find below my node JavaScript route for the above request. 现在,在我的节点下面的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 method looks like this: generateWebServiceResponse方法如下所示:

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

Even in case of failure it should land in success function with isSuccess = false . 即使发生故障,它也应使用isSuccess = false来实现成功功能。 But in each case it is landed in error case. 但是在每种情况下,它都是在错误情况下着陆的。

I am also not able to solve access origin error mentioned in the attached image. 我也无法解决附图中提到的访问源错误。

It happened because of CORS . 这是由于CORS而发生的。 You must enable CORS for your route. 您必须为您的路线启用CORS。 The simplest way is using Node.js CORS middleware 最简单的方法是使用Node.js CORS中间件

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM