加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

来自PHP的Backbone JSON请求麻烦

发布时间:2020-12-13 16:48:52 所属栏目:PHP教程 来源:网络整理
导读:我在stackoverflow上的第一篇文章. 我正在开发一个系统,它包含客户端 javascript和backbone.js以及highcharts.js,以显示我家可再生能源系统的实时数据. 它使用一个名为Arduino的小型微控制器来处理低水平的传感器数据. 控制器有自己的以太网硬件,我把它设置
我在stackoverflow上的第一篇文章.
我正在开发一个系统,它包含客户端 javascript和backbone.js以及highcharts.js,以显示我家可再生能源系统的实时数据.

它使用一个名为Arduino的小型微控制器来处理低水平的传感器数据.
控制器有自己的以太网硬件,我把它设置为小型服务器.

在我的客户端程序中,我使用Backbone作为MVC,模型URL指向Arduino的IP来请求json数据包.效果很好.

我现在正在做的是将URL指针移动到我的托管站点,在那里我有一个小的php文件从SQL表中提取数据并以相同的json格式呈现.

从我的浏览器中,当我从Arduino控制器请求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,"vB_pv":27.56}</pre></body>

编辑:包含Alex要求的完整标题

两者看起来都是一样的,但在我的客户端javascript中只有第一个实际工作在于数据成功地放入模型然后在屏幕上可见.

当我检查页面时,两者之间的一个区别是我的Arduino返回HTTP / 1.0,而我托管站点返回的json数据是HTTP / 1.1

这会导致这样的问题吗?

以下是该json的骨干模型;

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秒调用一次,这就是我想要的.

当我使用指向微控制器的第一个URL时,它就像一个魅力.
当我使用第二个URL时,我可以看到它发出请求并得到回复,但它似乎对数据没有任何作用,它没有放入模型中.

所以在我的客户端应用程序中,第一个URL我在渲染视图上看到了数据,但没有看到第二个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编码功能,但都没有成功.
事实上使用json编码产生我认为非json格式,所以我上面的格式可能格式不正确吗?它适用于第一个URL吗?

我搜索过,感觉有点卡在这里,所以我觉得是时候问我了.

保罗

解决方法

我几乎毫无疑问这是标题的问题.

在chrome go:view> developer> developer tools> network tab>然后重新加载并从左侧面板中选择文件,然后查看“标题选项卡”,它将为您提供详细发送或收到的每个http标题,然后您可以计算出2个结果之间的差异.

你的php标题(“content-type”…)应该可以工作,但如果没有,它可能是apache重写你的PHP标题();如果是这样,请更改.htaccess文件中的内容类型,或删除httpd.conf中.php文件的内容类型text / html属性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读