jQuery Ajax进行前后台交互时总是返回到error函数

今天在做一个留言系统时,为让留言不用刷新页面显示,使用了ajax前后台交互,结果返回时总是在error函数中

原因:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>创建留言</title>
<script type="text/javascript" src="../js/jQuery/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
    function saveMessage(){
        var content = $("textarea").val();
        $.ajax({
            dataType:"json",
            type:"POST",
            url:"saveMessage.action",
            data:{content:content},
            success:function(data){
                if(data.config){ 
                    $('#message').append(content);
                }
            },error:function(data){
                alert(data);
            }
        });    
    }

</script>
</head>
<body>
<center>
用户${user.uphone}你好
<br/>
如有问题请给我们留言,我们将在这里进行回复
<hr/>

    <div>

<!-- 这里 -->

         <form method="post">
            <table>
                <tr><td><textarea rows="3" cols="60" name="content" ></textarea></td></tr>
                <tr><td><button name="submit"  οnclick="saveMessage()">留言</button></td></tr>
            </table>
        </form>
    </div>
    
    <div>
        <div id="message" color="blue" width="18px"></div>
        <hr/>
    
        <c:forEach items="${messages }" var="message">
            <font color="red">${message.content }</font><br/>
        </c:forEach>
    
    </div>
</center>
</body>

</html>

原来的前台源码如上,

    @RequestMapping(value="/saveMessage")
    @ResponseBody
    private Map<String, Object> saveMessage(Message message,HttpSession httpSession){

        //将登陆的用户信息取出放进message表内,将留言信息与用户相互关联
        User user = (User)httpSession.getAttribute("user");
        message.setUser(user);
        boolean config=messageService.saveMessage(message);
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("config",config);
        return map;
    }
   

这是后台接收的方法



原因是前台使用了<form>表单,修改后前台代码如下:


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>创建留言</title>

<script type="text/javascript" src="../js/jQuery/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
    function saveMessage(){
        var content = $("textarea").val();
        $.ajax({
            dataType:"json",
            type:"POST",
            url:"saveMessage.action",
            data:{content:content},
            success:function(data){
                if(data.config){
                    
                    $('#message').append(content);
                }
            },error:function(data){
                alert(data);
            }
        });    
    }

</script>

</head>
<body>
<center>

用户${user.uphone}你好
<br/>
如有问题请给我们留言,我们将在这里进行回复
<hr/>

    <div>

<!-- 修改了这里 -->

            <table>
                <tr><td><textarea rows="3" cols="60" name="content" ></textarea></td></tr>
                <tr><td><button name="submit"  οnclick="saveMessage()">留言</button>
                </td></tr>
            </table>
   
    </div>
    
    <div>
        <div id="message" color="blue" width="18px"></div>
        <hr/>
    
        <c:forEach items="${messages }" var="message">
            <font color="red">${message.content }</font><br/>
        </c:forEach>
    
    </div>
</center>
</body>

</html>


只是将<form>表单给去掉了,然后就解决了


在实现ajax刷新页面时,用<form>表单会实现一次跳转,而在同页面显示时不需要跳转,拥有<form>表单时一般用于登陆验证。


可能还有其他原因,欢迎大家指正,共同进步


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值