Php json解析器空结果

Php json解析器空结果,php,json,gwt,Php,Json,Gwt,我是gwt新手,也不熟悉使用Firebug。我的gwt版本是2.0.0。使用eclipse和WAMP。我的IIS已停止运行WAMP apache。我在firefox上运行我的程序 我从位于中的tesdb3.php获得了有效的json结果 我使用 <inherits name='com.google.gwt.json.JSON'/> <inherits name="com.google.gwt.http.HTTP" /> 我以开发模式运行它。非托管模式。 我的代码没有显示

我是gwt新手,也不熟悉使用Firebug。我的gwt版本是2.0.0。使用eclipse和WAMP。我的IIS已停止运行WAMP apache。我在firefox上运行我的程序 我从位于中的tesdb3.php获得了有效的json结果

我使用

<inherits name='com.google.gwt.json.JSON'/>
<inherits name="com.google.gwt.http.HTTP" />
我以开发模式运行它。非托管模式。 我的代码没有显示任何错误。但是窗口警报中的结果是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


看来问题出在同一来源策略和跨站点请求上。从我得到的信息来看,如果请求是跨站点的,则不能使用RequestBuilder。对于exchange,请使用getJson和JSNI覆盖类型。本教程中的所有示例:。我将价格值更改为数据库值。最后..我的数据库显示在我的浏览器中耶!是啊!T-T.

我也有同样的问题。我们尝试做的不应该是SOP问题,因为两个页面都在同一台计算机中。问题在于eclipse在测试web时的执行情况。要解决此问题,请将war文件夹复制到htdocs中,并使用internet explorer运行它,然后检查代码是否正确。有可能在eclipse中配置运行,但我还不知道如何配置

我知道这是一篇老帖子,但我打算向所有目前有这个问题的人发布一个答案

造成此问题的原因是SOP同源策略。这个问题是因为PHP脚本与GWT或JavaScript web应用程序不在同一个域中

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

header('Access-Control-Allow-Origin: *');
这将告诉GWT运行php脚本的域站点接受来自任何其他域站点的请求

要将请求限制到给定站点,只需添加以下标题:

header('Access-Control-Allow-Origin: http://mysite.com');

来自的java脚本发出http请求的位置。

您可以通过代理运行请求,或者使用firebug来准确地告诉我们响应是什么吗?您是否为JSON输出设置了正确的头?标题的内容类型:application/json;字符集=UTF-8';其他身份类型呢?比如,404或500是否通过,或者是否也会导致状态代码为0?@tdavies:他已经发布了Firebug的“网络”选项卡的结果。@igor-当然,但我想看看响应正文和标题中到底包含了什么标题'Content-Type:text/javascript';标题“缓存控制:无缓存”;标题“Pragma:无缓存”;这是我的头球。这是我从一个例子中得到的。我尝试使用header的Content-type:application/json;字符集=UTF-8';结果是一样的,请考虑把评语改为评语而不是回答。
  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);
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Origin: http://mysite.com');