我有一个带有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);
?>
答案 0 :(得分:1)
这是same origin policy或domain whitelist的问题。
如果您从一个域(或同一个域和不同的端口/协议)加载一个页面,浏览器将发送请求,但不会提供您的javascript答案。
它将是状态码0和空消息。
发送CORS-Header也可能有帮助。
答案 1 :(得分:0)
不要认为你应该URL.encode
整个网址。
对整个网址进行编码的网址会导致http://testeddd.com/test.php
成为http%3A%2F%2Ftesteddd.com%2Ftest.php