nodejs 如何在客户端处理 删除请求返回的数据,怎么得到一个jason的结果并处理呢,Unexpected end of JSON input


 

//delete  这里是我的服务器端nodejs 请求删除的代码
//根据型号查询的结果返回并显示
app.post('/delete',urlencodedParser,function(req,res){
            console.log("delete...");
            var val = req.body;
            var jobname = val.jobname;
            console.log("jobname:" + jobname);

        pool.getConnection(function(err,connection){
            if(err){
                res.send('Can not connect to MySql DB');
                return  console.log(err);
            }else{
                var infomation;
                var dataFailed= {result:false,
                                  msg:'删除失败'};            
                connection.query("delete from info where jobname = ? ",jobname,function(err,result){
                    if(err){
                        infomation='Search failed';
                        
                        res.send(JSON.stringify(dataFailed));
                    }
                    if(result.affectedRows !== 1 ){
                        console.log('删除失败');
                        res.send(JSON.stringify(dataFailed));
                    }else{
                        console.log("删除成功!");
                       var data= {result:true,
                                  msg:'提交成功'}; 

                        res.send(JSON.stringify(data));
                        
                    }
                    


                })
            }
        });
        
});


        //这里是我的html页面 javascript onclick的事件
    //根据jobname删除对应的记录
    function deleteResult(){
        
        var obj={
            name:document.getElementById("jobname").value,
        };
        if(obj.name==""){
            document.getElementById("myspan").innerText = "*请填入你要删除的型号";
            return;
        }

         var form1 = document.getElementById("form1");
            form1.method = "post";
            form1.action = "/delete";
            form1.target = "iframeContent";
            form1.submit();    
            
        
//客户端这里该怎么写呢  怎么才能获取从从服务器返回过来的jason数据并解析呢,谢谢 
//客户端这里该怎么写呢  怎么才能获取从从服务器返回过来的jason数据并解析呢,谢谢 
//客户端这里该怎么写呢  怎么才能获取从从服务器返回过来的jason数据并解析呢,谢谢 
//客户端这里该怎么写呢  怎么才能获取从从服务器返回过来的jason数据并解析呢,谢谢 
我有iframe隐藏域,但是结果一直为空,    
        //const response = JSON.parse(result);
        //alert("result" + result);
        //alert("res:" + res);
        
        
        
    }    


引用 皆我百晓生 小程序回复内容作答:

在客户端处理删除请求返回的JSON数据,你可以使用XMLHttpRequest对象发送异步请求,然后在其回调函数中处理返回的数据。

首先,你需要修改HTML页面的deleteResult函数,将异步请求发送到服务器:

function deleteResult() {
    var obj = {
        name: document.getElementById("jobname").value,
    };
    if (obj.name == "") {
        document.getElementById("myspan").innerText = "*请填入你要删除的型号";
        return;
    }

    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/delete');
    xhr.setRequestHeader('Content-Type', 'application/json');
    xhr.onreadystatechange = function() {
        if (xhr.readyState === XMLHttpRequest.DONE) {
            if (xhr.status === 200) {
                var response = JSON.parse(xhr.responseText);
                if (response.result) {
                    // 删除成功
                    console.log(response.msg);
                } else {
                    // 删除失败
                    console.log(response.msg);
                }
            } else {
                // 请求失败
                console.log("请求删除失败");
            }
        }
    };
    xhr.send(JSON.stringify(obj));
}

在上述代码中,我们使用XMLHttpRequest对象创建一个POST请求,发送到服务器的/delete路径。请求头部设置为Content-Type: application/json以便服务器可以正确解析请求体。然后,我们指定一个回调函数,当请求状态发生变化时,会调用该函数。当请求完成(readyState为XMLHttpRequest.DONE)时,我们根据响应的status来判断请求是否成功。如果成功,我们将返回的JSON数据解析为JavaScript对象,并根据返回的结果进行相应的处理。

另外,你还需要将服务器的响应头部的Content-Type设置为application/json,并使用JSON.stringify()将要发送的JSON对象转换为字符串。

在服务端修改代码如下:

app.post('/delete', urlencodedParser, function(req, res) {
    console.log("delete...");
    var val = req.body;
    var jobname = val.jobname;
    console.log("jobname:" + jobname);

    pool.getConnection(function(err, connection) {
        if (err) {
            res.send('Can not connect to MySql DB');
            return console.log(err);
        } else {
            var dataFailed = {
                result: false,
                msg: '删除失败'
            };
            connection.query("delete from info where jobname = ? ", jobname, function(err, result) {
                if (err) {
                    res.setHeader('Content-Type', 'application/json');
                    res.send(JSON.stringify(dataFailed));
                } else if (result.affectedRows !== 1) {
                    console.log('删除失败');
                    res.setHeader('Content-Type', 'application/json');
                    res.send(JSON.stringify(dataFailed));
                } else {
                    console.log("删除成功!");
                    var data = {
                        result: true,
                        msg: '提交成功'
                    };

                    res.setHeader('Content-Type', 'application/json');
                    res.send(JSON.stringify(data));
                }
            })
        }
    });

});

在上述代码中,我们使用res.setHeader('Content-Type', 'application/json')将响应头部的Content-Type设置为application/json,并使用JSON.stringify()将返回的JSON对象转换为字符串。

这样,客户端就可以接收到服务器返回的JSON数据并进行解析和处理。

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^