spring mvc和ajax表单提交

时间:2015-01-04 21:46:35

标签: ajax spring spring-mvc

ajax如何确定交易是成功还是错误?

我有一个ajax函数来处理表单提交:

function createTranCall() {
    var nameval = $('#c-t-t').val(); 
    var amountval = $('#c-t-a').val();
    alert(nameval + " " + amountval);
    //return false;
    $.ajax( {
        type: "POST",
        url: "${pageContext.request.contextPath}/create/transaction",
        cache: false,
        data: "traname=" + nameval + "&tranamount=" + amountval,
        success: function(response) {
            /* $('#result').html('');
            var obj = JSON.parse(reponse);
            $('#result').html(obj.name); */
            alert("success");
        },
        error: function() {
            alert("Error while request ..");
        }
    });
}

和我的控制员:

@RequestMapping(value="/create/transaction", method=RequestMethod.POST)
@ResponseBody
public MyTransaction createTran(HttpServletRequest request, HttpServletResponse response) throws Exception {
        LOGGER.info("create new Transaction");
        MyTransaction myTran = MyTransaction.getInstance();

        String name = request.getParameter("traname");
        String amount = request.getParameter("tranamount");
        System.out.println("name: " + name + " - amount: " + amount);

        myTran.setName(name);
        return myTran;
    }

所以我可以从我的控制器发送和获取数据。但是我一直在打错误状态,并且不知道我是如何到达那里的。我搜索了类似于"是什么让ajax命中错误状态"但是找不到任何有用的东西(可能我没有提出更好的关键词)。

任何帮助和建议都会有很大帮助。谢谢。

2 个答案:

答案 0 :(得分:0)

首先尝试仅从服务器发送字符串

@RequestMapping(value="/create/transaction", method=RequestMethod.POST)
@ResponseBody
public MyTransaction createTran(HttpServletRequest request, HttpServletResponse response) throws Exception {
        LOGGER.info("create new Transaction");
        MyTransaction myTran = MyTransaction.getInstance();

        String name = request.getParameter("traname");
        String amount = request.getParameter("tranamount");
        System.out.println("name: " + name + " - amount: " + amount);

        myTran.setName(name);
        return myTran;
    }

将其转换为

@RequestMapping(value="/create/transaction", method=RequestMethod.POST)
@ResponseBody
public String createTran(){

        return "works";
    }

如果这不起作用则表示它与服务器java代码有问题。这也意味着你的ajax调用没有问题

其次,您可以将MyTransaction返回类型更改为字符串,以查看它是否有效。在返回值时更改类型。

答案 1 :(得分:-1)

据我所知,你总是得到这个块:

error: function() {
            alert("Error while request ..");
        }

最常见的问题是您的班级MyTransactionJSON没有映射器等。 尝试添加:

  • com.fasterxml.jackson.databind.jar
  • com.fasterxml.jackson.core.jar
  • com.fasterxml.jackson.annotation.jar

    或者如果您使用 maven

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.2.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.2.3</version>
        </dependency>
        <dependency>
           <groupId>com.fasterxml.jackson.core</groupId>
           <artifactId>jackson-core</artifactId>
           <version>2.2.3</version>
        </dependency>
    

    版本可以不同

    您也可以明确告诉AJAX您希望从服务器返回的数据类型:

    dataType: 'json'
    

    http://api.jquery.com/jquery.ajax/

    如果仍然出现错误状态,请尝试执行类似

    的操作
        $.ajax({
    
              url : 'your_url',
              type: 'GET', 
              dataType: 'json',
              contentType: 'application/json',
              mimeType: 'application/json',
              data : ({
    
               traname: nameval,
               tranamount: amountval
    
              }),
    
              success: function (response) {
    
              },
              error: function ()
              {
    
              }
    
          });
    

    希望这个答案对你有用