我正在使用Java应用程序,并且我从模式窗口提交了ajax表单。 我希望代码在模式中加载成功或错误页面,具体取决于服务器端处理结果。以下代码仅适用于成功方案。
$.ajax({
type: "POST",
url: action,
data: params,
success: function() {
$("#p_content").load("/test.jsp?id=12345");
}
});
我对ajax很新,但据我所知,将“error:”部分添加到上面的脚本是不够的,它不会检测我的servlet代码中的错误。有什么办法可以从这个函数里面读取一个请求参数吗?或许我可以用别的东西?请帮忙!
谢谢, 娜塔莎
答案 0 :(得分:1)
这是在php中完成的一个例子。希望它有用。
<html><!-- This is index.php -->
<head>
<script src="js/jquery.js" type="text/javascript"></script><!-- link to jQuery -->
<script language="javascript">
$(document).ready(function () {
$('input#send').click(function(){
/* Empty div#error and div#result incase they contain info from the last submission */
$('#error').empty('');
$('#result').empty('');
/* Client-side validation */
var name = $("input#name").val();
var age = $("input#age").val();
if (name==''){
alert('Insert your name.');
}
else if (age==''){
alert('Insert your age.');
} else {
var params = 'name=' + name + '&age=' + age;
$.ajax({
url:'b.php',
type:'post',
dataType:'html',
data:params,
cache: false,
success:data
});
function data (html) {
var $html = $( html ); // create DOM elements in a jQuery object
/* Return errors from 'b.php' */
$html.filter('#err').appendTo("#error");
/* Return valid Post */
$html.filter('#res').appendTo("#result");
/* Clear name input */
$('input#name').val('');
/* Clear age input */
$('input#age').val('');
}
}
});
});
</script>
<style type='text/css'>
#error{
color:maroon;
font-weight:bold;
}
#result{
color:green;
font-weight:bold;
}
</style>
</head>
<body>
<div id="error"></div><!-- View Errors -->
<div id="result"></div><!-- View valid Post -->
<input type='text' name='name' id="name" value='' /><br/ >
<input type='text' name='age' id="age" value='' /><br/ >
<input type='submit' name='send' id="send" value='Send' />
</body>
</html>
<?php /* This is b.php */
if(($_POST['name']=='')||($_POST['age']=='')){
$error = '<div id="err">Error: Fill in ALL fields.</div>';
} elseif(is_numeric($_POST['name'])){
$error = '<div id="err">Error: Name should NOT contain numbers.</div>';
} elseif(!is_numeric($_POST['age'])){
$error = '<div id="err">Error: Age should ONLY contain numbers.</div>';
} else{
$result = '<div id="res">Hi '.$_POST['name'].', you are '.$_POST['age'].' years old.</div>';
}
echo $error;
echo $result;
?>
答案 1 :(得分:0)
当出现意外情况时(通常为500),您的servlet应返回相应的HTTP status code。当服务器响应有问题的状态代码时,jQuery将调用您的error
回调函数。
答案 2 :(得分:0)
如果您无法避免在服务器端发生错误时发送明显的HTTP成功代码(1xx,2xx或3xx),那么jQuery将始终调用您的success
函数。您需要检查在客户端(JS)代码中发回的数据,以确定您在浏览器中对返回的信息执行的操作。