我使用GWT(1.6)一个RequestBuilder,成功地将一个字符串(格式化为日期),PHP脚本我的Web服务器上。我的PHP然后使用该字符串来查询MySQL数据库。我然后能够回声的结果,这是成功GWT解释。

我的问题是,我不只是想“回声”回一个字符串。我想送一个数组回到GWT。这里的问题是,得到GWT Type“响应”的对象,而不是阵列。

有谁知道我能做些什么?下面是一些代码:

 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";将只输出“阵列”或类似。你可以看看使用发回JSON或XML,例如 json_encode() ,e.g。

echo json_encode($array);

我会想象你可以在GWT很容易分析这个 - 见的 JSONParser

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top