Вопрос с отправкой массива из PHP в GWT

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

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

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

 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, но я пробовал и не смог заставить его работать. Любые идеи?

Спасибо...


person littleK    schedule 10.07.2009    source источник


Ответы (1)


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

echo json_encode($array);

Я полагаю, что вы могли бы легко проанализировать это в GWT - см. JSONParser

person Tom Haigh    schedule 10.07.2009
comment
Мне кажется, что JSONParser может только анализировать строку в значение JSON... я ошибаюсь в этом? - person littleK; 10.07.2009
comment
Я думаю, что попытаюсь использовать XML, как вы предложили, с этим в качестве руководства: ibm.com/developerworks/opensource/library/x-gwtphp/ - person littleK; 10.07.2009
comment
Да, он анализирует строку. Это то, что вы хотите. В PHP вы конвертируете свой массив в строку JSON, а затем в GWT вы анализируете эту строку JSON обратно в структуру данных. Я бы выбрал это, а не XML - это должно быть проще. - person Tom Haigh; 10.07.2009