【实习记】2014-08-17关于json格式的小错误花2小时debug

现象:jQuery开发时$.get()或$.getJSON()的回调均没调用,但firebug中确定以请求该资源。

原因:返回的json格式出错,"name":json,因为这样没有双引号而导致的。

排除过程:
1、查看服务器的http头,确定Conten-Type:application/json没有错。
2、回调函数没有执行,想到换掉旧的可用jquery和boostrap版本,结果并非版本问题。
3、修改回调函数,不管怎样都无法执行。
4、对比其它正确的json的http头,但无论有无加入Content-Length都不行。
5、修改json成{error:0},成功,逐步对比并增量调试json,发现问题。修正,成功。

相关代码如下

txproj_server.c

    /* 表 */
    MYSQL_ROW *row = (MYSQL_ROW*)mysql_fetch_row(result);
    while (row){                                        /* 不停读行 */
        snprintf(line, MAXLINE,
                // \"%s\":%s, 这里格式错误,调试2小时!$.get[JSON]()的回调函数一直不运行。
                "{\"id\":%s, \"%s\":\"%s\", \"amount\":%s, \"refund\":%s, \"create_time\":\"%s\", \"status\":%s}",
                (const char*)row[0], other, (const char*)row[1],
                (const char*)row[2],(const char*)row[3],(const char*)row[4],(const char*)row[5]);
        if (strlen(line) >= left)                 /* 缓冲区已满 */
            break;
        strncat(data, line, left);
        left -= strlen(line);
        strncat(data, ",", 1);
        row = (MYSQL_ROW*)mysql_fetch_row(result);
    }

txproj_list.cpp

        if (type!="" && name!="" && token!="" && id!=""){
        // if (type=="" || name=="" || token=="" || id==""){
            string cmd = "list|" + type + ‘|‘ + id + ‘|‘ + token;
            send_reci(cmd.c_str(), cmd.size()+10, buf_recv, MAXLINE);
            // 有没有长度都行的
            cout << "Content-Length:" << strlen(buf_recv)+32 << "\r\n";
            cout << "Content-Type:application/json" << "\r\n\r\n";
            // 格式必须json正确,不如$.get[JSON]回调函数不执行,大坑!!!
            cout << buf_recv << "\r\n";
            // cout << "{\"error\":0}" << "\r\n";
            // cout << "{\"error\":0,\"type\":2, \"len\":0, \"data\":[]}" << "\r\n";
            // cout << "{\"error\":0,\"type\":2, \"len\":0, \"data\":[{\"test\":1}]}" << "\r\n";
        } else {

txproj_buyer.html

$.get("/cgi-bin/txproj_list", function(data){
        console.log(data);
        });

【实习记】2014-08-17关于json格式的小错误花2小时debug

时间: 2024-12-20 19:26:40

【实习记】2014-08-17关于json格式的小错误花2小时debug的相关文章

ajax往后台传json格式数据报415错误

问题描述: ajax往后台传json格式数据报415错误,如下图所示 页面代码 function saveUser(){ var uuId = document.getElementById("uuid").value; var idCard = document.getElementById("idCard").value; alert(uuId+idCard); // var result = new Object(); // result.uuId = uuI

记在thinkPHP中一个创建模型的小错误

在创建好模型以后,访问说没有该方法,如图 看代码 class ManagerModel { //put your code here function checkDenglu($name,$pwd){ $info=$this->getByMg_name($name); show($info); } } 看代码少了继承,这种小错误,不容易发现,正确的应该为 class ManagerModel extends Model{ //put your code here function checkDe

中国天气网城市代码json格式的生成与应用

一.城市代码Json格式生成 各个天气应用普遍使用中国天气网的城市id,但是最近天气网开始要求注册.认证,估计离收费不远,开放接口也时灵时不灵,为了app的流畅运行,可以将城市代码保存到本地使用.源城市代码网址:http://cj.weather.com.cn/support/Detail.aspx?id=51837fba1b35fe0f8411b6df,源城市代码原文: 1 城市ID列表 2 3 citycode 城市 二级 一级 4 5 101010100,北京,北京,北京 6 7 1010

【实习记】2014-08-20实习的mini项目总结

实习项目总结文档 项目介绍 项目逻辑很简单,只有几个页面,只能登录,查看,支付和退款.主要作用是熟悉C++的cgi的web服务开发方式. 项目页面截图 图一:登录页面 图二:买家查看 图三:买家支付 图五:卖家查看 图六:卖家退款 准备:一个星期 8月28日,第1天,入域,安装rtx,qq,wps,管家.不太顺利,可能我比较笨,用了半天.安装git,vim,firefox,chrome.发现git必须配置http://web-proxy.oa.com:8000代理.颇不如意,挺折腾人.导师根据实

【实习记】2014-08-18使用curl排错http头的content-length

总结一,用curl排错Content-Length设置错误,误导了客户端. 访问/cgi-bin/txproj_list时,firebug显示总是不多不少15秒,调试其他问题时郁闷. firebug没有具体延时15秒的提示,一直百思不得其解. 直到我使用curl [email protected]:~$ curl http://192.168.56.101:8080/cgi-bin/txproj_list -b "name=rich; token=1333500450rich; id=10000

全国各省、市、县、镇、村的mysql数据库和JSON格式数据

直接开门见山了,放出下载地址先: 1.http://blog.jjonline.cn/soft/J_Position/ajing.sql.gz phpmyadmin压缩导出的mysql库,库名:ajing,内有6个表,一个表不带后缀的是原始数据,每一行是一个村,从省至村:另外5个带后缀的表是相关联的,关联id为各自的行政编码,例如湖北省id为420(其实是42,数据库中省份编码均是3位数字,最后一个0是多余的),宜昌市id为4205(然后用8个0补齐就是420500000000),当阳市(我的家

2014/08/06 – Backbonejs

[来自:Backbone.js 开发秘笈 第3章] Collection API (function ($) { //define ----------------------------- var ModelD = Backbone.Model.extend({ defaults: { ID: 0, Name: '' }, idAttribute: 'ID' }); //定义集合对象 /* 在其内部,模型被存储在一个名为 models 的数组当中 */ var CollectionD = Ba

oracle 解析json格式

1. CREATE OR REPLACE PACKAGE PKG_ANALYSE_COMMON IS -- AUTHOR : YZCHEN -- CREATED : 2013/11/26 14:12:43 -- PURPOSE : 公共存储过程包 /* * AUTHOR: YZCHEN DATETIME: 2013-11-26 14:20:36 * DESC: 根据P_SEQ分割字符串,并返回数据格式,默认以,分割 */ -- 分割后的字符串临时存储类型 TYPE TYPE_SPLIT IS T

2014/08/05 – Backbonejs

[来自: Backbone.js 开发秘笈 第2章] Model API: (function ($) { //define Model Class ------------------- var ModelClass = Backbone.Model.extend({ defaults: {},//Backbone 支持在模型初始化时动态进行定义 [支持多行表达式设置默认值,即值为函数] initialize: function () { //模型对象被创建后即被调用 /* 注:如定义了默认属