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命中错误状态"但是找不到任何有用的东西(可能我没有提出更好的关键词)。
任何帮助和建议都会有很大帮助。谢谢。
答案 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 ..");
}
最常见的问题是您的班级MyTransaction
到JSON
没有映射器等。
尝试添加:
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 ()
{
}
});
希望这个答案对你有用