成功回调函数将不会调用当Ajax调用的servlet [英] success callback function is not called when ajax call to servlet
问题描述
我想使依赖下拉列表。对于我创建了一个jsp页面,并通过Ajax调用。在servlet中调用servlet的我使用JSON对象为下拉返回值。值正确进来的JSON对象,但该请求得到了一些错误完成(如成功的方法是没有得到所谓的,而不是错误的方法被调用)。
下面是我的ajax code:
$阿贾克斯({类型:GET,
网址:MyServlet指数=+ LISTINDEX,
数据类型:JSON,
错误:函数(){
警报(错误);
},
成功:功能(数据){
尝试{
变种citiArray = JSON.parse(数据);
如果(citiArray!= NULL){
对于(VAR S = 0; S< citiArray.length; S ++){
VAR系列= citiArray [S]。
//填充下拉列表
$(#DNAME)追加。($(<选项>< /选项>中。)VAL(serial.authors1)的.html(serial.authors1));
}
}
}
赶上(错误){
警报(ERR);
}
}
});
我的servlet code:MyServlet.java
公共类MyServlet延伸的HttpServlet {
/ **
* @see的HttpServlet#的HttpServlet()
* /
公共MyServlet()
{
超();
// TODO自动生成构造函数存根
}
/ **
* @see的HttpServlet#的doGet(HttpServletRequest的请求,HttpServletResponse的响应)
* /
保护无效的doGet(HttpServletRequest的请求,HttpServletResponse的响应)抛出了ServletException,IOException异常{
尝试 {
的Class.forName(oracle.jdbc.driver.OracleDriver);
连接CON =的DriverManager.getConnection(JDBC:神谕:薄:// //本地主机:1521 / ORCL,人力资源,密码);
request.setCharacterEncoding(UTF-8);
response.setCharacterEncoding(UTF8);
response.setContentType(应用/ JSON);
PrintWriter的输出= response.getWriter();
字符串LISTINDEX =的request.getParameter(指数);
的out.print(LISTINDEX);
字符串query2 =?选择模块的过程中,其中的cname =;
preparedStatement ST2 = CON prepareStatement(query2)。
st2.setString(1,LISTINDEX);
结果集RS2 = st2.executeQuery();
JSONArray uniList1 =新JSONArray();
而(rs2.next())
{
uniList1.add(rs2.getString(模块));
//System.out.println(rs2.getString("module));
}
JSONObject的OBJ =新的JSONObject();
obj.put(钥匙,uniList1);
的System.out.println(OBJ);
的out.print(OBJ);
}
赶上(例外五){
// TODO自动生成的catch块
e.printStackTrace();
}
}
}
的web.xml:
< servlet的名称>&MyServlet LT; / Servlet的名称>
<的servlet类> com.dac.MyServlet< / Servlet的类>
< / servlet的>
< Servlet映射>
< servlet的名称>&MyServlet LT; / Servlet的名称>
< URL模式> / MyServlet< / URL模式>
< / Servlet映射>
谢谢 罗希特
发送即使抛出异常的响应
赶上(例外五)
{
// TODO自动生成的catch块
e.printStackTrace();
//发送响应
的out.print(e.getMessage());
}
您可以有误差与详细说明:
错误:函数(theRequest,theStatus,theError)
{
警报(theRequest.responseText);
}
而不是
错误:函数(){
警报(错误);
}
I am trying to make dependent drop down list. For that I have created a jsp page and in that calling servlet through ajax call .In the servlet I am using Json object for returning values for dropdown . Values are correctly coming in Json object But The request is getting completed with some error (as success method is not getting called instead error method is called ) .
Here is my ajax code :
$.ajax({ type: "GET",
url: "MyServlet?index="+listindex,
datatype: 'JSON',
error : function() {
alert("Error");
},
success : function(data) {
try{
var citiArray=JSON.parse(data);
if(citiArray != null){
for(var s=0;s<citiArray.length;s++){
var serial=citiArray[s];
//populating drop down list
$("#dname").append($("<option></option>").val(serial.authors1).html(serial.authors1));
}
}
}
catch(err){
alert(err);
}
}
});
My Servlet code :MyServlet.java
public class MyServlet extends HttpServlet {
/**
* @see HttpServlet#HttpServlet()
*/
public MyServlet()
{
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con =DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521/orcl" ,"hr", "password");
request.setCharacterEncoding("utf8");
response.setCharacterEncoding("utf8");
response.setContentType("application/json");
PrintWriter out = response.getWriter();
String listindex = request.getParameter("index");
out.print(listindex);
String query2 = "select module from course where cname=?";
PreparedStatement st2 = con.prepareStatement(query2);
st2.setString(1,listindex);
ResultSet rs2=st2.executeQuery();
JSONArray uniList1 = new JSONArray();
while (rs2.next())
{
uniList1.add(rs2.getString("module"));
//System.out.println(rs2.getString("module"));
}
JSONObject obj = new JSONObject();
obj.put("key", uniList1 );
System.out.println(obj);
out.print(obj);
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
web.xml:
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.dac.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
Thanks Rohit
Send a response even if an exception is thrown
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
//send the response
out.print(e.getMessage());
}
You can have a detailed description of the error with:
error: function (theRequest, theStatus, theError)
{
alert(theRequest.responseText);
}
instead of
error : function() {
alert("Error");
}
这篇关于成功回调函数将不会调用当Ajax调用的servlet的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!