gpt4 book ai didi

php - json解析器空结果

转载 作者:行者123 更新时间:2023-12-04 21:03:35 25 4
gpt4 key购买 nike

我是 gwt 的新手,也是使用 Firebug 的新手。我的 gwt 版本是 2.0.0。使用 Eclipse 和 WAMP。我的 IIS 停止运行 WAMP apache。我在 Firefox 上运行我的程序
我有来自 tesdb3.php 的有效 json 结果,位于“http://localhost/phpmyadmin/tesdb3/datauser.php

{"item": [{"kode":"002","nama":"bambang gentolet"},
{"kode":"012","nama":"Algiz"}]}

我添加了xml
<inherits name='com.google.gwt.json.JSON'/>
<inherits name="com.google.gwt.http.HTTP" />

然后我尝试使用此代码在 gwt 中显示它。
public class Tesdb3 implements EntryPoint { 

String url= "http://localhost/phpmyadmin/tesdb3/datauser.php";

public void LoadData() throws RequestException{

RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url));

builder.sendRequest(null, new RequestCallback(){
@Override
public void onError(Request request, Throwable exception) {
Window.alert("error " + exception);
}
public void onResponseReceived(Request request,
Response response) {
if (200 == response.getStatusCode()) {
Window.alert("ok -" + response.getText() + "-" + response.getStatusCode());
} else {
Window.alert("error2 -" + response.getText()+ response.getStatusText() + "-" + response.getStatusCode());
}
}
});
}

public void onModuleLoad() {
try {
LoadData();
} catch (RequestException e) {
e.printStackTrace();
}
}
}

我在开发模式下运行它。非托管模式。
我的代码没有显示任何错误。但是窗口警报的结果是“error2 --OK-0”。
result Net from firebug is 7 request:
get Tesdb3.html?gwt.codeserv = 200ok
get Tesdb3.css = 200ok
get tesdb3.nocache.js = 200ok
get hosted.html?tesdb3 = aborted
get standard.css = 304 not modified
get hosted.html?tesdb3 = 403 not modified
get datauser.php = 200ok

我的问题是:

为什么响应状态码为 0,响应状态文本为“OK”? json 或 Java 代码没有错误。

为什么 response.getText是空的?为什么即使是单个字符也无法获得任何 json 结果?

请帮我。已经 2 个月了,我尝试使用多种源类型来解决这个问题,但我无法得到一个结果。

这是我的 datauser.php
  header('Content-type: application/json; charset=UTF-8');
header('Cache-Control: no-cache');
header('Pragma: no-cache');

$link = mysql_connect("localhost", "root", "")
or die("Could not connect : " . mysql_error());
mysql_select_db("tesku1") or die("Could not select database" . mysql_error());

$query = "select * from tabel1";
$result = mysql_query($query);

$jumlah_data = mysql_num_rows($result);

echo '[';

for ($i=0; $i<=count($result); $i++){
$row = mysql_fetch_array($result);

echo '{';
echo "\"kode\":\"$row[kode]\",";
echo "\"nama\":\"$row[nama]\"";

if ($i==count($result)){
echo '}';
}else
echo '},';
}
echo ']';

mysql_free_result($result);

最佳答案

我知道这是一篇旧帖子,但我打算向所有目前遇到此问题的人发布答案。

这个问题的原因是SOP(Same Origin Policy)。这个问题源于 PHP 脚本与 GWT 或 JavaScript Web 应用程序不在同一个域中。

解决方案非常简单,只需在 PHP 脚本中添加一个新 header ,如下所示:

header('Access-Control-Allow-Origin: *');

这将告诉 GWT 运行 php 脚本的域(站点)接受来自任何其他域(站点)的请求。

要限制对给定站点的请求,只需添加以下 header :
header('Access-Control-Allow-Origin: http://mysite.com');

来自 http://mysite.com 的 java 脚本在哪里发出http请求。

关于php - json解析器空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2988434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com