Php json解析器空结果
我是gwt新手,也不熟悉使用Firebug。我的gwt版本是2.0.0。使用eclipse和WAMP。我的IIS已停止运行WAMP apache。我在firefox上运行我的程序 我从位于中的tesdb3.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" /> 我以开发模式运行它。非托管模式。 我的代码没有显示
<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');