0

一段时间以来,我一直在使用以下功能并取得了巨大的成功,但最近它停止了工作。我没有改变任何东西;相同的浏览器、服务器、相同的 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()函数将字符串转换为对象,但它总是返回空对象。希望这能解决问题。

4

1 回答 1

0

尝试\n从您的 RegEx 中删除。

所以它看起来像这样:

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;
    }
于 2013-11-08T16:12:55.237 回答