Pergunta

Eu estou usando um RequestBuilder no GWT (1,6) que envia com sucesso um String (formatado como uma data) a um script PHP no meu servidor web. Meu PHP então usa essa seqüência para consultar um banco de dados MySQL. Sou então capaz de ecoar resultado, que é interpretado com sucesso por GWT.

Meu problema é que eu não só quero "eco" de volta uma String. Eu quero enviar uma mensagem de volta Array para GWT. A questão aqui é que GWT recebe um objeto do tipo 'Resposta', e não matriz.

Alguém sabe o que eu posso fazer? Aqui está um código:

 PHP CODE:

 <?php 
require_once('../scripts/config.php');

$date = $GLOBALS['HTTP_RAW_POST_DATA']; 

$query = mysql_query("SELECT * FROM eventcal WHERE eventDate = '$date'");

if (@mysql_num_rows($query)) {
    while ($r=@mysql_fetch_assoc($query)) { 
        $id = $r["id"];  
        $primary = $r["primary"];
        $secondary = $r["secondary"];
        $eventContent = $r["eventContent"];
        $region = $r["region"];

    }
}

$array = array("$id", "$primary", "$secondary", "$eventContent", "$region");

echo "$array";

 ?>

código GWT (trechos):

 public void onChange(Widget sender) {
 lb.setText("Date selected: " + calendar.getDate());
 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
 String current = df.format(calendar.getDate());

 RequestBuilder builder = new RequestBuilder(RequestBuilder.GET,   URL.encode("http://www.kbehr.com/calendar/view_duty.php"));

try {
  builder.sendRequest(current, new RequestCallback(){
    public void onError(Request request, Throwable exception) {
      requestFailed(exception);
    }

    public void onResponseReceived(Request request, Response response) {

        String responseText = response.getText();
        try {
          processResults(responseText);
        } catch (Exception e) {
          Window.alert(responseText);
        }

    }});
}catch (RequestException ex) {
  requestFailed(ex);
}    

 }});
 fp.add(calendar);
 fp.add(lb);  

 }

 private void processResults(String something){

  // process the array

 }

Eu sei que eu posso usar JSON, mas eu tentei isso e não poderia fazê-lo funcionar. Alguma idéia?

Obrigado ...

Foi útil?

Solução

A linha de echo "$array"; será apenas de saída 'array' ou similar. Você poderia olhar para enviar de volta JSON ou XML, por exemplo, usando json_encode() , por exemplo.

echo json_encode($array);

Eu imagino que você poderia analisar isso com bastante facilidade no GWT - veja JSONParser

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top