这是我的代码,
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();
});
}
答案 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;
});