Вопрос

Я использую RequestBuilder в GWT (1.6), который успешно отправляет строку (отформатированную как дата) PHP-скрипту на моем веб-сервере.Затем мой PHP использует эту строку для запроса к базе данных MySQL.Затем я могу повторить результат, который успешно интерпретируется GWT.

Моя проблема в том, что я не просто хочу "эхом" возвращать строку.Я хочу отправить Массив обратно в GWT.Проблема здесь в том, что GWT получает объект типа 'Response', а не Array .

Кто-нибудь знает, что я могу сделать?Вот некоторый код:

 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";

 ?>

Код GWT (фрагменты):

 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

 }

Я знаю, что могу использовать JSON, но я попробовал это и не смог заставить это работать.Есть какие-нибудь идеи?

Спасибо...

Это было полезно?

Решение

Линия echo "$array"; просто выведет 'array' или что-то подобное.Вы могли бы посмотреть на отправку обратно JSON или XML, например, используя json_encode(), например

echo json_encode($array);

Я бы предположил, что вы могли бы довольно легко разобрать это в GWT - see JsonParser - анализатор

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top