2015-11-25 41 views
6

Tôi đang phát triển một dự án RESTFul web service trong đó có một POJO như sau:Ajax gọi làm việc trên Google Chrome nhưng không phải trên IE 11

@XmlRootElement 
public class Input { 
    //variable declarations 

    public Input(){ 
     //default constructor 
    } 

    //constructor no 1 
    public Input(String LR, double ECH,double CSH,String APP) { 
     this.LR = LR; 
     this.ECH = ECH; 
     this.CSH = CSH; 
     this.APP = APP; 
    } 

    //constructor no 2 
    public Input(String LR, double ECH,double CSH,String APP,...) { 
     this.LR = LR; 
     this.ECH = ECH; 
     this.CSH = CSH; 
     this.APP = APP; 
     //constructor of all other parameters including these 
    } 

//getters and setters method below. 
} 

ajax của tôi là nhận được gọi vào nút này:

<button type="submit" onClick='functionname();' class="btn btn-primary" ><span class="glyphicon glyphicon-lock"></span>Function</button> 

Lớp học Controller tôi có như sau:

@Path("/input") 
public class InputResponse { 
InputService inputservice = new InputService(); 

@PUT 
@Path("/approve") 
@Produces(MediaType.APPLICATION_JSON) 
public void approveInputRecord(Input obj) throws Exception{ 
    String LR = obj.getLR(); 
    double CSH = obj.getCSH(); 
    double ECH = obj.getECH(); 
    String APP = obj.getAPP(); 
    Input input = new Input(LR,CSH,ECH,APP); 
    input = inputservice.approveTransaction(input); 
    } 
} 

Service lớp cho cùng là như sau:

public class InputService { 

CallableStatement stmt; 
Statement commitStmt; 

public InputService(){ 
    //database connection 
} 

public Input approveTransaction(Input input) throws SQLException { 
    commitStmt = dcc.con.createStatement(); 
    stmt=dcc.con.prepareCall("BEGIN APPROVRTRANSACTION(?,?,?,?); END;"); 
    stmt.setString(1, input.getLR()); 
    stmt.setDouble(2, input.getECH()); 
    stmt.setDouble(3, input.getCSH()); 
    stmt.setString(4, input.getAPP()); 
    stmt.execute(); 
    commitStmt.executeQuery("COMMIT"); 
    return input; 
} 
} 

Bên trong tôi JAVA Scriptajax cuộc gọi của tôi để ở trên là:

var obj = { 
    LogReference : logreference, 
    EuroclearHoldings:euroclearholdings, 
    ClearstreamHoldings:clearstreamholdings, 
    Approver : loginXPID 
} 
var jsonobj = JSON.stringify(obj); 
$.ajax({ 
    url:'./webapi/input/approve', 
    type: 'PUT', 
    data:jsonobj, 
    cache:false, 
    contentType: 'application/json', 
    dataType:'json', 
    success:function(data) 
    { 
     alert('success'); 
    }, 
    error:function(xhr,textstatus,errorthrown){ 
     alert(xhr.responseText); 
     alert(textstatus); 
     alert(errorthrown); 
    } 
},'json'); 

Có điều này là mã của tôi ứng dụng của tôi đang làm việc tốt trên Google Chrome nhưng đôi khi làm việc và đôi khi không phải trên Internet Explorer 11. Đây là hành vi kỳ lạ. Và điều khác mà tôi không thể nhận được ngay cả khi nó hoạt động trên Chrome cuộc gọi ajax luôn bị lỗi alerts. Ai có thể vui lòng giải thích tại sao nó như vậy? Và làm thế nào để giải quyết nó? Bất kỳ giúp đỡ nhiều đánh giá cao. Cập nhật

Đây là đầu ra trên tab network --> Response trên chrome khi lỗi được ném. Nhưng mặc dù tôi vẫn nhận được đầu ra. enter image description here

Nhiều Cảm ơn

+0

Bạn có thể thử sử dụng các yêu cầu 'POST' thay cho' PUT'. –

+0

@MadushanPerera Nếu tôi sử dụng 'POST' hoặc' PUT', nó sẽ đưa ra cùng một vấn đề. Nhưng đối với 'GET', nó không hoạt động trên một trong hai trình duyệt và đưa ra lỗi 'không thay thế khả thi ở đầu vào' '' – tpsaitwal

+0

bạn có thể vui lòng cung cấp phản hồi của máy chủ từ tab 'Mạng' của trình duyệt Chrome hay không. – MeetJoeBlack

Trả lời

7

Như tôi đã có thể nhìn thấy Button type="submit" của bạn. Nếu nó nằm trong số form tag thì hãy gọi số ajax request trong action của tệp. Như tôi có thể thấy từ các nhận xét ở trên, đây có thể là vấn đề. Khi bạn gửi nội dung nào đó, điều này sẽ thay đổi thành yêu cầu POST và không phải yêu cầu GET do đó yêu cầu của phương pháp này không được phép. Và nhìn vào giải pháp chỉ cần thay đổi Button type='button' hoặc gọi số ajax trên action của form tag. Nó sẽ hoạt động.

Các vấn đề liên quan