2013-04-04 79 views
1

我有一个JSON页面的内容将取决于成功值{"success":1} or {"success": 0},我必须显示错误消息或成功消息。如果页面不可用,那么我也应该给出错误信息。我在加载div中有一个微调:这是我的代码。在getJSON中不调用失败函数

url = "add.jsp"; 
$("#loading").show(); 
$.getJSON(url, dataToBeSent, function(data) { 
    $.each(data, function(key, val) { 
     if (val == 0) { 
      $("#loading").hide(); 
      $("#add_response").show(); 
      $("#add_response #error_message").show(); 
      $("#add_response #success_message").hide(); 
     } else { 
      $("#loading").hide(); 
      $("#add_response").show(); 
      $("#add_response #error_message").hide(); 
      $("#add_response #success_message").show(); 
     } 
    }) 
    .fail(function(){ 
     $("#loading").hide(); 
     $("#add_response").show(); 
     $("#add_response #error_message").hide(); 
     $("#add_response #success_message").show(); 
    }); 
}); 

在我的控制台中没有错误消息。我没有文件add.jsp。因此getJSON应该失败。我究竟做错了什么?请帮我找出答案。为什么失败根本不会被调用?

追问:这是继答案由Hardik建议代码

<script type="text/javascript"> 
var url = "add.jsp"; 
$("document").ready(function() { 
    $('input[name=submit]').click(function(e) { 
     var dataToBeSent = $("form").serialize(); 
     var url = 'db.jsp'; 
     $.ajax({ 
      url : url, 
      data : dataToBeSent, 
      dataType : 'json', 
      success : function(response) { 
       $('#response').text(response.success); 
      }, 
      error : function(request, textStatus, errorThrown) { 
       alert(request.status + ', Error: ' + request.statusText); 
       // perform tasks for error 
      } 
     }); 
     e.preventDefault(); 
    }); 
}); 
</script> 

回答

1
<script type="text/javascript" src="js/jquery.min.js"></script> 
// I have jquery.js under js directory in my webapp 
<script type="text/javascript"> 
    var url = "add.jsp"; 
    $(function(){ 
     $.ajax({ 
      url : url, // Pass you Servlet/ JSP Url 
      data : { 
       empId : 0 
      }, // data can be passed from outside 
      dataType : 'json', 
      success : function(response) { 
       alert('Success'); 
          // perform tasks for success 
      }, 
      error : function(request, textStatus, errorThrown) { 
       alert(request.status + ', Error: ' + request.statusText); 
          // perform tasks for error 
      } 
     }); 
}); 
</script> 

EDIT--例子:

<script type="text/javascript"> 
    $(function(){ 
     function getData(url, dataToBeSent) { 
      console.log(dataToBeSent); 
      $.ajax({ 
       url : url, 
       data :dataToBeSent, 
       dataType : 'json', 
       success : function(response) { 
        alert(response.success); 
       }, 
       error : function(request, textStatus, errorThrown) { 
        alert(request.status + ', Error: ' + request.statusText); 
       } 
      }); 
     } 
     getData('getData.jsp', '{name:Hardik}'); // You should use Servlet to get Data. This is just an example 
}); 

getData.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<% 
response.setContentType("application/json"); 
out.println("{\"success\":1}"); // Write values using JSONObject 
%> 
+0

如何从JSON文件获取数据?我是否需要在成功函数中写入getJSON方法?这需要两倍的时间。我试图打印变量响应,但它是空白的。 – NewUser 2013-04-04 06:45:00

+0

不需要。您不需要再次调用'getJSON'。上面的例子本身就是一个例子。传递你的Servlet/JSP。我添加了错误的JSP名称以方便错误示例。 – 2013-04-04 06:49:16

+0

您以哪种格式发送'dataToBeSent'? – 2013-04-04 06:53:19