我已经使用以下功能一段时间取得了巨大的成功,但就在最近它停止了工作。我什么都没改变;相同的浏览器,服务器,相同的jquery库,一切都是一样的,所以我迷失了什么是错的。以下函数采用长字符串并将其转换为对象:
$(function()
{
var _sid = getUrlVar('AICC_SID');
var _url = getUrlVar('AICC_URL');
$.get(_url,{command:"GetParam",version:"2.2",session_id:_sid},function(response)
{
var _obj = toJSON(response);
console.log(_obj);
});
});
function toJSON(str)
{
var obj = {};
str.replace(/([^=]+)=(.*)\n/g, function (_, name, value)
{
console.log('name : ' + name);
console.log('value : ' + value);
obj[name] = $.trim(value);
});
return obj;
}
这是获得转换的字符串:
ERROR=0
ERROR_TEXT=Successful
VERSION=2.2
AICC_DATA=[CORE]
STUDENT_ID=0425655
STUDENT_NAME=Doe, John B
SCORE=
TIME=00:00:00
CREDIT=C
LESSON_LOCATION=1_5
LESSON_STATUS=NULL
[Core_Lesson]
[Objectives_Status]
问题是.replace()
似乎没有运行。 toJSON()
函数将字符串转换为对象,但它始终返回并清空对象。希望能够解决问题所在。
答案 0 :(得分:0)
尝试从您的RegEx中删除\n
。
所以它看起来像这样:
str.replace(/([^=]+)=(.*)/g, ...
我猜这是与换行相关的问题。
<强>更新强>
尝试使用以下内容更新toJSON()
:
function toJSON(str) {
var obj = {};
str.replace(/([^=]+)=(.*)/g, function (_, name, value) {
name = name.replace(/\n/g, '');
console.log('name : ' + name);
console.log('value : ' + value);
obj[name] = $.trim(value);
});
return obj;
}