2013-08-29 75 views
1

考慮使用Ajax模式如何捕捉AJAX beforeSend事件GWT RPC

$.ajax({ 
     url: "someUrl",   
     beforeSend: function(){ 
      executeBeforeSend(); 
     }, 
     error: function(){ 
     //some error 
     }, 
     success: function(){ 
     //some success function 
     } 
    }); 

如果我們有beforeSend whick只是服務器調用之前執行下面的例子。

現在我們都知道GWT RPC使用Ajax來調用服務器asynchronous

private class MessageCallBack implements AsyncCallback<Message> { 
     @Override 
     public void onFailure(Throwable caught) { 
     /* server side error occured */ 

     } 
     @Override 
     public void onSuccess(Message result) { 
      /* server returned result, show user the message */ 
     }  
    } 

但是,有像onBeforeSend等沒有方法。如何catchevent

有什麼解決方法嗎?

回答

1

您可以使用RpcRequestBuilder返回RequestBuilder的子類,其中您已覆蓋send()方法。

+0

感謝thomos即期reply.Is有什麼辦法來警察了這一帶'gwtp'模式我在哪裏使用動作處理程序?我只需要'execute'函數之前的這個事件。 –

1

您可以使用javaQuery庫來處理這個問題。 javaQuery是的jQuery到Java的部分端口,因此擁有所有的預期阿賈克斯方法:

$.ajax(new AjaxOptions().url("someUrl").dataType("json").type("GET")//get and json are default anyway 
         .beforeSend(new Function() { 
          @Override 
          public void invoke($ javaQuery, Object... params) { 
           executeBeforeSend(); 
          } 
         }) 
         .error(new Function() { 
          @Override 
          public void invoke($ javaQuery, Object... params) { 
           AjaxError error = (AjaxError) params[0]; 
           Log.err("Error %d: %s", error.status, error.reason); 
          } 
         }) 
         .success(new Function() { 
          @Override 
          public void invoke($ javaQuery, Object... params) { 
           if (params[0] instanceof JSONObject) { 
            JSONObject obj = (JSONObject) params[0]; 
            //TODO 
           } 
           else { 
            JSONArray array = (JSONArray) params[0]; 
            //TODO 
           } 
          } 
         }) 
         .complete(new Function() { 
          @Override 
          public void invoke($ javaQuery, Object... params) { 
           executeComplete(); 
          } 
         })); 
+0

其實,有了這個我必須改變我所有的RPC結構..雖然謝謝你試圖幫助:) –