JSON.parse语法错误:无法正确修改输入(数据)

时间:2014-01-28 16:31:09

标签: javascript jquery xml

这是我的代码,

function rdsxsVal() {
'use strict';
$.get("../cgi-bin/csps_rdsxs.cgi?r=" + Math.random(), function (data) {

    spsVal = JSON.parse(data);

我在Opera中使用调试器并查看data = "<?xml version="1.0" encoding=...

错误是:Uncaught SyntaxError: Unexpected token <

所以我已经研究了很多,并尝试了我能做到但没有成功。

JSON.parse('"ssdata"');不会失败。除了确认我需要纠正错误的格式之外,这没有用。我需要双引号之外的单引号。

所以我尝试按data = "'" + data + "'";添加单引号 但这会导致,

data = "'<?xml version="1.0" encoding=...

这是错误的,单引号位于错误的位置。

我想也许"(双引号)是如此使用的调试器效果,

data = "" + data;

但这没有效果。

我还尝试用"替换',但这不起作用,

data = data.toString().replace("\"", '\'');

我觉得有一个简单的答案,但我只是没有看到它。

解决方案: 因此,通过使用来自@ chris-vdp的建议,我现在有了以下工作代码,并且从调试器我可以确认它进入.done部分而不是.fail,即使两个部分由于某种原因是相同的。

function rdspsVal() {
'use strict';
$.ajax({
    url: "../cgi-bin/csps_rdsps.cgi?r=" + Math.random(),
    dataType: "xml"
}).done(function (data) {
    spsVal = data;
    if (!rdspsInit) {
        home();
        rdspsInit = true;
    }
    rdspsVal();
    timer1();
}).fail(function (data) {
    spsVal = data;
    if (!rdspsInit) {
        home();
        rdspsInit = true;
    }
    rdspsVal();
    timer1();
});

}

代替原文,

function rdspsVal(){
$.get("../cgi-bin/csps_rdsps.cgi?r="+Math.random(), function(data) {
 spsVal = JSON.parse(data);
}).done(function(){
    if(!rdspsInit){
     home();
     rdspsInit = true;
    }
     rdspsVal();
     timer1();
}).fail(function(){
    if(!rdspsInit){
     home();
     rdspsInit = true;
    }
    rdspsVal();
    timer1();
});

}

1 个答案:

答案 0 :(得分:0)

$.get$.ajax的简写。您似乎缺少的是数据类型。 jQuery会为你解析你的结果。

$.ajax({
  url: "../cgi-bin/csps_rdsxs.cgi?r=" + Math.random(),
  success: success,
  dataType: "xml"
});

编辑:使用Promises将数据分配给变量的示例。

$.ajax({
    url: "../cgi-bin/csps_rdsxs.cgi?r=" + Math.random(),
    dataType: "xml"
}).done(function(data) {
    spsVal=data;
});