GWT PHP从Webserver获取数据

时间:2014-04-24 18:57:27

标签: php gwt webserver

我有一个带有MYSQL数据库的网页。 我可以轻松地在其中插入数据但是当涉及到“选择”时 它抛出“(”无法检索JSON“)”甚至可能从带有jetty服务器的Web服务器获取此数据。我实际上计划使用支持PHP的Phonegap http://phonegap.com/2012/05/02/phonegap-explained-visually/

       RequestBuilder request = new RequestBuilder(RequestBuilder.POST,URL.encode("http://testeddd.com/test.php"));

   String name = mioUsername.getText();
String pssw = miaPassword.getText();
        JSONObject jsonValue = new JSONObject();
        jsonValue.put("myusername", new JSONString(name));
        jsonValue.put("mypassword", new JSONString(pssw));
        request.setHeader("Content-Type", "application/json");
        try {
request.sendRequest(jsonValue.toString(),new RequestCallback() {
    @Override
    public void onResponseReceived(Request request, Response response) {
 if (200 == response.getStatusCode()) {
                                      try {
                            JSONValue jsonValue = JSONParser.parse(response.getText());
                            JSONArray jsonArray = jsonValue.isArray();
                            if (jsonArray != null) {

                                RootPanel.get().clear();
                                  RootPanel.get().add(new MapComp());

                        } else {
                             Dialogs.alert("1", "fault", null);

                        }     } catch (JSONException e) {
                             Dialogs.alert("2",  e.toString(), null);
                          }
                        } else {
                             Dialogs.alert("request none",  "Couldn't retrieve JSON (" + response.getStatusText() + ")", null);
                        }

    }

    @Override
    public void onError(Request request, Throwable exception) {
        //displayError("Couldn't retrieve JSON");
    }
});
} catch (com.google.gwt.http.client.RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

我的php文件:

     <?php

  header('Content-Type: text/javascript');
  header('Cache-Control: no-cache');
  header('Pragma: no-cache');
  $str = $_POST['param'];
  $con=mysqli_connect("llxxllxxx","lll","lll","lll");
  // Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM xxx".$str);

   $i = 0; 
         while( $row = mysqli_fetch_array($result, MYSQLI_ASSOC) ) 
         { 
             $array[$i] = $row; 
             $i++; 
         } 
         $result->close(); 
         $con->close(); 

      print json_encode($array); 




?>

2 个答案:

答案 0 :(得分:1)

这是same origin policydomain whitelist的问题。

如果您从一个域(或同一个域和不同的端口/协议)加载一个页面,浏览器将发送请求,但不会提供您的javascript答案。

它将是状态码0和空消息。

发送CORS-Header也可能有帮助。

答案 1 :(得分:0)

不要认为你应该URL.encode整个网址。

对整个网址进行编码的网址会导致http://testeddd.com/test.php成为http%3A%2F%2Ftesteddd.com%2Ftest.php