我在 stackoverflow 上的第一篇文章。 我正在开发一个包含客户端 javascript 和 backbone.js 以及 highcharts.js 的系统,以显示来 self 家中可再生能源系统的实时数据。
它使用一个称为 Arduino 的小型微 Controller 来处理低级别的传感器数据。 Controller 有自己的以太网硬件,我将其设置为小型服务器。
在我的客户端程序中,我使用 Backbone 作为 MVC,模型 URL 指向 Arduino 的 IP 以请求 json 数据包。效果很好。
我现在正在做的是将该 URL 指针移至我的托管网站,我在该网站上有一个小的 php 文件,用于从 SQL 表中提取数据并以相同的 json 格式呈现。
当我从我的浏览器中请求来自 Arduino Controller 的 json 数据包时,它看起来像这样;
<head></head><body><pre>{"vT_pv":234.00,"iT_pv":5.90,"iS_pv":0.00,"vB_pv":27.51}</pre></body>
当我将浏览器指向我调用 php 的托管站点时,它看起来像这样;
<head></head><body><pre>{"vT_pv":230.70,"iT_pv":4.90,"iS_pv":0.00,"vB_pv":27.56}</pre></body>
编辑:已按照 Alex 的要求包含完整标题
两者看起来相同,但在我的客户端 javascript 中,只有第一个真正起作用,因为数据已成功放入模型,然后可以在屏幕上查看。
两者之间的一个区别是,当我检查页面时,我的 Arduino 以 HTTP/1.0 返回,而从我的托管站点返回的 json 数据是 HTTP/1.1
这是否足以引起这样的问题?
下面是那个json的 Backbone 模型;
PollerModel = Backbone.Model.extend({
// url:'//xxx.xxx.xxx.xxx/poller.json', // this one works
url: 'http://yyy.yyy.yyy.yyy.host_site/sql_get_live.php', // this one does not
startUpdate: function() {
var that = this;
startUpdate(that);
function startUpdate(isThis) {
that.fetch({async:false});
pollerUpdateInterval = setTimeout(function(){startUpdate(that);}, 5000);
};
},
});
如您所见,调用 startUpate 函数后,它将永远每 5 秒调用一次,这正是我想要的。
当我使用指向微 Controller 的第一个 URL 时,它就像一个魅力。 当我使用第二个 URL 时,我可以看到它发出请求并得到回复,但它似乎对数据没有做任何事情,它没有放入模型中。
所以在我的客户端应用程序中,我在第一个 URL 中看到了渲染 View 中的数据,但在第二个 URL 中看不到数据。
以下是我在主机站点上的php文件;
<?php
// The JSON standard MIME header.
// header('content-type: application/json; charset=utf-8');
$con = mysql_connect('host', 'username', 'password');
if (!$con) {
die('mysql connect error: ' .mysql_error());
}
mysql_select_db("DataBase", $con);
$sql_Live = "SELECT * FROM live";
$mysql_record = mysql_query($sql_Live,$con);
$row = mysql_fetch_array($mysql_record);
$jsonData = '{"vT_pv":' . $row['vT_pv'] . ',"iT_pv":' . "4.90" . ',"iS_pv":' . $row['iS_pv'] . ',"vB_pv":' . $row['vB_pv'] . '}';
echo "<pre >";
echo $jsonData;
echo "</pre>";
mysql_close($con);
?>
被注释掉的标题对格式或任何结果没有影响。 我尝试过以各种方式使用 json encode 函数,但都没有成功。 事实上,使用 json 编码会产生我认为是非 json 格式的格式,所以我使用的上述格式可能格式不正确?但它适用于第一个 URL?
我已经搜索过了,感觉有点卡在这里,所以我想是时候问一下了。
保罗
最佳答案
我几乎毫不怀疑这是 header 的问题。
在 chrome go:view>developer>developer tools>network tab> 然后重新加载并从左侧面板中选择文件,然后查看“headers tab”,它会给你发送或接收的每个 http header 的详细信息你可以找出两个结果之间的差异。
你的 php header("content-type"...) 应该可以工作,但如果不行,它可能是 apache 覆盖了你的 PHP header();如果是这样,请更改 .htaccess 文件中的内容类型或删除 httpd.conf 中 .php 文件的 content-type text/html 属性。
关于php - 来自 PHP 的 Backbone JSON 请求问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13898428/
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
由于fast-stemmer的问题,我很难安装我想要的任何rubygem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=
当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。
首先回顾一下拉格朗日定理的内容:函数f(x)是在闭区间[a,b]上连续、开区间(a,b)上可导的函数,那么至少存在一个,使得:通过这个表达式我们可以知道,f(x)是函数的主体,a和b可以看作是主体函数f(x)中所取的两个值。那么可以有, 也就意味着我们可以用来替换 这种替换可以用在求某些多项式差的极限中。方法: 外层函数f(x)是一致的,并且h(x)和g(x)是等价无穷小。此时,利用拉格朗日定理,将原式替换为 ,再进行求解,往往会省去复合函数求极限的很多麻烦。使用要注意:1.要先找到主体函数f(x),即外层函数必须相同。2.f(x)找到后,复合部分是等价无穷小。3.要满足作差的形式。如果是加